From 7ca9f21dbe1c44342ed2269085441609c2d6ddb2 Mon Sep 17 00:00:00 2001
From: Gareth Tribello <gt@eider.asg>
Date: Fri, 6 Dec 2013 15:55:51 +0000
Subject: [PATCH] Added source code from crystallization to main trunk of
 plumed

The source code from crystallization allows you to calculate
Q4 and Q6 parameters.  You can also calculate local Q4 and local
Q6 parameters and you create compound collective variables based
on the relative orientations of internal vectors in adjacent molecules.

Regtests for this functionality are reasonably thorough.  Manual is
not so great as yet
---
 regtest/.gitignore                            |   2 +-
 regtest/crystallization/.gitignore            |   2 +
 regtest/crystallization/Makefile              |   2 +
 .../rt-average-vec/LJ75C_global-minima.xyz    |  77 +++
 .../crystallization/rt-average-vec/Makefile   |   1 +
 .../rt-average-vec/colvar.reference           |   2 +
 regtest/crystallization/rt-average-vec/config |   3 +
 .../rt-average-vec/derivatives.reference      | 235 +++++++
 .../crystallization/rt-average-vec/plumed.dat |   5 +
 .../rt-averaged-q6-lowmem/64.xyz              |  66 ++
 .../rt-averaged-q6-lowmem/Makefile            |   1 +
 .../rt-averaged-q6-lowmem/colv.reference      |   2 +
 .../rt-averaged-q6-lowmem/colv3.reference     |   2 +
 .../rt-averaged-q6-lowmem/config              |   3 +
 .../rt-averaged-q6-lowmem/deriv3.reference    | 202 ++++++
 .../rt-averaged-q6-lowmem/plumed.dat          |   7 +
 regtest/crystallization/rt-averaged-q6/64.xyz |  66 ++
 .../crystallization/rt-averaged-q6/Makefile   |   1 +
 .../rt-averaged-q6/colv.reference             |   2 +
 .../rt-averaged-q6/colv3.reference            |   2 +
 regtest/crystallization/rt-averaged-q6/config |   3 +
 .../rt-averaged-q6/deriv.reference            | 202 ++++++
 .../rt-averaged-q6/deriv3.reference           | 202 ++++++
 .../crystallization/rt-averaged-q6/plumed.dat |  10 +
 .../rt-nbonds-q6-lowmem/64.xyz                |  66 ++
 .../rt-nbonds-q6-lowmem/Makefile              |   1 +
 .../rt-nbonds-q6-lowmem/colv1.reference       |   2 +
 .../rt-nbonds-q6-lowmem/colv2.reference       |   2 +
 .../rt-nbonds-q6-lowmem/config                |   3 +
 .../rt-nbonds-q6-lowmem/deriv1.reference      | 202 ++++++
 .../rt-nbonds-q6-lowmem/deriv2.reference      | 202 ++++++
 .../rt-nbonds-q6-lowmem/plumed.dat            |  15 +
 regtest/crystallization/rt-nbonds-q6/64.xyz   |  66 ++
 regtest/crystallization/rt-nbonds-q6/Makefile |   1 +
 .../rt-nbonds-q6/colv1.reference              |   2 +
 .../rt-nbonds-q6/colv2.reference              |   2 +
 regtest/crystallization/rt-nbonds-q6/config   |   3 +
 .../rt-nbonds-q6/deriv1.reference             | 202 ++++++
 .../rt-nbonds-q6/deriv2.reference             | 202 ++++++
 .../crystallization/rt-nbonds-q6/plumed.dat   |  15 +
 regtest/crystallization/rt-q6-lowmem/64.xyz   |  66 ++
 regtest/crystallization/rt-q6-lowmem/Makefile |   1 +
 .../rt-q6-lowmem/colv.reference               |   2 +
 .../rt-q6-lowmem/colv3.reference              |   2 +
 regtest/crystallization/rt-q6-lowmem/config   |   3 +
 .../rt-q6-lowmem/deriv.reference              | 202 ++++++
 .../rt-q6-lowmem/deriv3.reference             | 202 ++++++
 .../crystallization/rt-q6-lowmem/plumed.dat   |   9 +
 regtest/crystallization/rt-q6-subset/64.xyz   |  66 ++
 regtest/crystallization/rt-q6-subset/Makefile |   1 +
 .../rt-q6-subset/colv3.reference              |   2 +
 regtest/crystallization/rt-q6-subset/config   |   3 +
 .../rt-q6-subset/deriv3.reference             | 586 ++++++++++++++++++
 .../crystallization/rt-q6-subset/plumed.dat   |   7 +
 regtest/crystallization/rt-q6/64.xyz          |  66 ++
 regtest/crystallization/rt-q6/Makefile        |   1 +
 regtest/crystallization/rt-q6/colv.reference  |   2 +
 regtest/crystallization/rt-q6/colv2.reference |   2 +
 regtest/crystallization/rt-q6/colv3.reference |   2 +
 regtest/crystallization/rt-q6/colv4.reference |   2 +
 regtest/crystallization/rt-q6/config          |   3 +
 regtest/crystallization/rt-q6/deriv.reference | 202 ++++++
 .../crystallization/rt-q6/deriv2.reference    | 202 ++++++
 .../crystallization/rt-q6/deriv3.reference    | 202 ++++++
 .../crystallization/rt-q6/deriv4.reference    | 202 ++++++
 regtest/crystallization/rt-q6/plumed.dat      |  19 +
 src/.gitignore                                |   1 +
 src/crystallization/.gitignore                |   9 +
 src/crystallization/LocalSteinhardt.h         |  44 ++
 src/crystallization/Makefile                  |   4 +
 src/crystallization/MoleculeOrientation.cpp   | 115 ++++
 src/crystallization/OrientationSphere.cpp     | 138 +++++
 src/crystallization/OrientationSphere.h       |  56 ++
 src/crystallization/Q4.cpp                    |  82 +++
 src/crystallization/Q6.cpp                    |  85 +++
 src/crystallization/Steinhardt.cpp            | 186 ++++++
 src/crystallization/Steinhardt.h              |  50 ++
 src/crystallization/StoreVectorsVessel.cpp    | 149 +++++
 src/crystallization/StoreVectorsVessel.h      |  76 +++
 src/crystallization/VectorAverage.cpp         | 162 +++++
 src/crystallization/VectorMultiColvar.cpp     | 193 ++++++
 src/crystallization/VectorMultiColvar.h       | 189 ++++++
 src/crystallization/module.type               |   1 +
 83 files changed, 5682 insertions(+), 1 deletion(-)
 create mode 100644 regtest/crystallization/.gitignore
 create mode 100644 regtest/crystallization/Makefile
 create mode 100644 regtest/crystallization/rt-average-vec/LJ75C_global-minima.xyz
 create mode 100644 regtest/crystallization/rt-average-vec/Makefile
 create mode 100644 regtest/crystallization/rt-average-vec/colvar.reference
 create mode 100644 regtest/crystallization/rt-average-vec/config
 create mode 100644 regtest/crystallization/rt-average-vec/derivatives.reference
 create mode 100644 regtest/crystallization/rt-average-vec/plumed.dat
 create mode 100755 regtest/crystallization/rt-averaged-q6-lowmem/64.xyz
 create mode 100644 regtest/crystallization/rt-averaged-q6-lowmem/Makefile
 create mode 100644 regtest/crystallization/rt-averaged-q6-lowmem/colv.reference
 create mode 100644 regtest/crystallization/rt-averaged-q6-lowmem/colv3.reference
 create mode 100644 regtest/crystallization/rt-averaged-q6-lowmem/config
 create mode 100644 regtest/crystallization/rt-averaged-q6-lowmem/deriv3.reference
 create mode 100644 regtest/crystallization/rt-averaged-q6-lowmem/plumed.dat
 create mode 100755 regtest/crystallization/rt-averaged-q6/64.xyz
 create mode 100644 regtest/crystallization/rt-averaged-q6/Makefile
 create mode 100644 regtest/crystallization/rt-averaged-q6/colv.reference
 create mode 100644 regtest/crystallization/rt-averaged-q6/colv3.reference
 create mode 100644 regtest/crystallization/rt-averaged-q6/config
 create mode 100644 regtest/crystallization/rt-averaged-q6/deriv.reference
 create mode 100644 regtest/crystallization/rt-averaged-q6/deriv3.reference
 create mode 100644 regtest/crystallization/rt-averaged-q6/plumed.dat
 create mode 100755 regtest/crystallization/rt-nbonds-q6-lowmem/64.xyz
 create mode 100644 regtest/crystallization/rt-nbonds-q6-lowmem/Makefile
 create mode 100644 regtest/crystallization/rt-nbonds-q6-lowmem/colv1.reference
 create mode 100644 regtest/crystallization/rt-nbonds-q6-lowmem/colv2.reference
 create mode 100644 regtest/crystallization/rt-nbonds-q6-lowmem/config
 create mode 100644 regtest/crystallization/rt-nbonds-q6-lowmem/deriv1.reference
 create mode 100644 regtest/crystallization/rt-nbonds-q6-lowmem/deriv2.reference
 create mode 100644 regtest/crystallization/rt-nbonds-q6-lowmem/plumed.dat
 create mode 100755 regtest/crystallization/rt-nbonds-q6/64.xyz
 create mode 100644 regtest/crystallization/rt-nbonds-q6/Makefile
 create mode 100644 regtest/crystallization/rt-nbonds-q6/colv1.reference
 create mode 100644 regtest/crystallization/rt-nbonds-q6/colv2.reference
 create mode 100644 regtest/crystallization/rt-nbonds-q6/config
 create mode 100644 regtest/crystallization/rt-nbonds-q6/deriv1.reference
 create mode 100644 regtest/crystallization/rt-nbonds-q6/deriv2.reference
 create mode 100644 regtest/crystallization/rt-nbonds-q6/plumed.dat
 create mode 100755 regtest/crystallization/rt-q6-lowmem/64.xyz
 create mode 100644 regtest/crystallization/rt-q6-lowmem/Makefile
 create mode 100644 regtest/crystallization/rt-q6-lowmem/colv.reference
 create mode 100644 regtest/crystallization/rt-q6-lowmem/colv3.reference
 create mode 100644 regtest/crystallization/rt-q6-lowmem/config
 create mode 100644 regtest/crystallization/rt-q6-lowmem/deriv.reference
 create mode 100644 regtest/crystallization/rt-q6-lowmem/deriv3.reference
 create mode 100644 regtest/crystallization/rt-q6-lowmem/plumed.dat
 create mode 100755 regtest/crystallization/rt-q6-subset/64.xyz
 create mode 100644 regtest/crystallization/rt-q6-subset/Makefile
 create mode 100644 regtest/crystallization/rt-q6-subset/colv3.reference
 create mode 100644 regtest/crystallization/rt-q6-subset/config
 create mode 100644 regtest/crystallization/rt-q6-subset/deriv3.reference
 create mode 100644 regtest/crystallization/rt-q6-subset/plumed.dat
 create mode 100755 regtest/crystallization/rt-q6/64.xyz
 create mode 100644 regtest/crystallization/rt-q6/Makefile
 create mode 100644 regtest/crystallization/rt-q6/colv.reference
 create mode 100644 regtest/crystallization/rt-q6/colv2.reference
 create mode 100644 regtest/crystallization/rt-q6/colv3.reference
 create mode 100644 regtest/crystallization/rt-q6/colv4.reference
 create mode 100644 regtest/crystallization/rt-q6/config
 create mode 100644 regtest/crystallization/rt-q6/deriv.reference
 create mode 100644 regtest/crystallization/rt-q6/deriv2.reference
 create mode 100644 regtest/crystallization/rt-q6/deriv3.reference
 create mode 100644 regtest/crystallization/rt-q6/deriv4.reference
 create mode 100644 regtest/crystallization/rt-q6/plumed.dat
 create mode 100644 src/crystallization/.gitignore
 create mode 100644 src/crystallization/LocalSteinhardt.h
 create mode 100644 src/crystallization/Makefile
 create mode 100644 src/crystallization/MoleculeOrientation.cpp
 create mode 100644 src/crystallization/OrientationSphere.cpp
 create mode 100644 src/crystallization/OrientationSphere.h
 create mode 100644 src/crystallization/Q4.cpp
 create mode 100644 src/crystallization/Q6.cpp
 create mode 100644 src/crystallization/Steinhardt.cpp
 create mode 100644 src/crystallization/Steinhardt.h
 create mode 100644 src/crystallization/StoreVectorsVessel.cpp
 create mode 100644 src/crystallization/StoreVectorsVessel.h
 create mode 100644 src/crystallization/VectorAverage.cpp
 create mode 100644 src/crystallization/VectorMultiColvar.cpp
 create mode 100644 src/crystallization/VectorMultiColvar.h
 create mode 100644 src/crystallization/module.type

diff --git a/regtest/.gitignore b/regtest/.gitignore
index e0fa2957c..53f6adae9 100644
--- a/regtest/.gitignore
+++ b/regtest/.gitignore
@@ -6,6 +6,7 @@
 !/function
 !/analysis
 !/basic
+!/crystallization
 !/multicolvar
 !/secondarystructure
 !/trajectories
@@ -16,4 +17,3 @@
 # These files we just want to ignore completely
 tmp
 report.txt
-crystallization
diff --git a/regtest/crystallization/.gitignore b/regtest/crystallization/.gitignore
new file mode 100644
index 000000000..1774e730a
--- /dev/null
+++ b/regtest/crystallization/.gitignore
@@ -0,0 +1,2 @@
+tmp
+report.txt
diff --git a/regtest/crystallization/Makefile b/regtest/crystallization/Makefile
new file mode 100644
index 000000000..42480767a
--- /dev/null
+++ b/regtest/crystallization/Makefile
@@ -0,0 +1,2 @@
+include ../scripts/module.make
+
diff --git a/regtest/crystallization/rt-average-vec/LJ75C_global-minima.xyz b/regtest/crystallization/rt-average-vec/LJ75C_global-minima.xyz
new file mode 100644
index 000000000..7a7838540
--- /dev/null
+++ b/regtest/crystallization/rt-average-vec/LJ75C_global-minima.xyz
@@ -0,0 +1,77 @@
+75                     
+20.0 20.0 20.0
+  Ar         2.156314665600000          0.332416216700000          0.513126025200000 
+  Ar        -2.156300474800000         -0.332412410700000         -0.513124876500000 
+  Ar        -0.702793674600000          2.171863642800000         -0.858784503500000 
+  Ar         0.659045453900000          1.787780916200000         -1.522472201000000 
+  Ar         0.798449910200000         -2.248251783800000          0.506226343900000 
+  Ar        -0.022636417900000         -2.295872820200000         -0.822727880400000 
+  Ar        -0.756863594600000         -1.513752823700000          1.756176946900000 
+  Ar         0.051864419700000         -0.348964899200000          2.413282592900000 
+  Ar         0.114224421200000         -1.090981090200000         -2.178339734900000 
+  Ar        -0.034338688200000          2.145430444700000          1.159468509200000 
+  Ar         1.070320378200000          0.145259276700000         -2.186711386800000 
+  Ar        -1.177239405500000          1.247469885700000          1.733878573200000 
+  Ar         0.010844723900000         -0.018042493100000         -2.438845596400000 
+  Ar        -1.093809429700000          1.982092729600000          0.907363491000000 
+  Ar        -0.117770227300000          1.410814751600000          1.985981610200000 
+  Ar         1.173690836800000         -0.927676514000000         -1.926197168900000 
+  Ar        -1.007603949500000         -0.512322527600000          2.161176171000000 
+  Ar         0.302601633400000         -1.350397093600000          2.008299558700000 
+  Ar        -0.261011523000000         -2.411582646900000          0.254092900100000 
+  Ar         1.036829515600000         -2.132552598000000         -0.570596656300000 
+  Ar         0.356676405400000          2.335191057400000         -0.606680557200000 
+  Ar        -0.400425624500000          1.624470895400000         -1.774581006300000 
+  Ar         1.349148818900000          0.926092205800000         -1.454662633700000 
+  Ar        -0.564466336500000         -1.552560006200000         -1.436945362700000 
+  Ar        -1.378122819300000          1.696930711100000         -0.122776624400000 
+  Ar         1.078388723900000         -1.457641190100000          1.227279110900000 
+  Ar         0.575519981700000          0.550681434300000          2.039449397100000 
+  Ar        -1.545431600800000          0.223683232300000          1.534762826600000 
+  Ar        -1.042548187100000         -1.784615887600000          0.722556802300000 
+  Ar         0.742830086900000          2.023907149300000          0.381913813000000 
+  Ar         1.556488992400000         -1.225623767800000         -0.932202708400000 
+  Ar        -0.771799746600000          0.599152152500000         -1.959385975200000 
+  Ar         1.745878547400000          0.627498670300000         -0.470657762200000 
+  Ar        -1.760343983900000          0.681454293600000         -0.316521837600000 
+  Ar        -1.354310310500000         -0.940115477200000         -0.972314742200000 
+  Ar         1.849356012400000         -0.446260911400000         -0.209937642600000 
+  Ar         1.610773063900000         -0.562042410600000          0.867687532800000 
+  Ar        -1.843837957400000         -0.053731949600000          0.510633022800000 
+  Ar         1.359827429100000          0.440160015000000          1.272977638900000 
+  Ar         1.443325159700000          1.175334182300000          0.445833172900000 
+  Ar        -1.592886743700000         -1.055916847200000          0.105328100700000 
+  Ar        -1.457777920800000          0.133636901400000         -1.233032111000000 
+  Ar        -1.076487121600000          1.148907502800000         -1.042104966700000 
+  Ar         0.828272207800000         -0.453763210700000          1.634879884000000 
+  Ar         1.319158943500000         -1.342662121700000          0.147803726500000 
+  Ar        -0.804802818000000         -1.670085100500000         -0.357641985000000 
+  Ar        -0.669308472100000         -0.477199145600000         -1.699732539500000 
+  Ar         0.660344455700000          1.288464576900000          1.211845922900000 
+  Ar         1.047478118400000          1.476333464500000         -0.536671658000000 
+  Ar        -1.295696717800000         -0.781217521500000          1.129462457400000 
+  Ar         1.454651107900000         -0.149798804300000         -1.194276651500000 
+  Ar        -1.463622086600000          0.961017498400000          0.706433381100000 
+  Ar         0.017818765500000         -1.612093134200000          0.969488030600000 
+  Ar        -0.482253277000000          0.385020251300000          1.777145426100000 
+  Ar        -0.315878924400000          1.850046605700000          0.128851061600000 
+  Ar         0.287065951400000          0.758371962700000         -1.697510602900000 
+  Ar         0.493241127600000         -1.381350362800000         -1.177970225000000 
+  Ar        -0.232532468700000         -0.614374457300000          1.375192981300000 
+  Ar         0.255877017100000         -1.498767288700000         -0.104386431400000 
+  Ar        -0.014431970900000          1.305992147000000         -0.785402010600000 
+  Ar        -0.399611419500000          1.119060383400000          0.954295218000000 
+  Ar         0.390688302700000         -0.311916192400000         -1.439703399700000 
+  Ar        -1.068344333300000         -0.164686987700000         -0.254226648300000 
+  Ar         1.068339195400000          0.164695077000000          0.254225311900000 
+  Ar        -0.688853047800000          0.838281616600000         -0.062441472700000 
+  Ar         0.374609000600000          1.002225786100000          0.190625601700000 
+  Ar        -0.388945345900000          0.295265142100000         -0.970914657300000 
+  Ar        -0.771620441500000          0.109542329000000          0.757460793900000 
+  Ar         0.291841482800000          0.273493762700000          1.010522496000000 
+  Ar         0.674512112800000          0.459200123500000         -0.717840848000000 
+  Ar         0.777079029300000         -0.605146646100000         -0.459410991300000 
+  Ar        -0.286381855900000         -0.769080419800000         -0.712481556500000 
+  Ar         0.540589242000000         -0.719920721500000          0.608779082400000 
+  Ar        -0.522870216900000         -0.883863029800000          0.355710852500000 
+  Ar        -0.000006107200000          0.000004299100000         -0.000000755700000 
diff --git a/regtest/crystallization/rt-average-vec/Makefile b/regtest/crystallization/rt-average-vec/Makefile
new file mode 100644
index 000000000..3703b27ce
--- /dev/null
+++ b/regtest/crystallization/rt-average-vec/Makefile
@@ -0,0 +1 @@
+include ../../scripts/test.make
diff --git a/regtest/crystallization/rt-average-vec/colvar.reference b/regtest/crystallization/rt-average-vec/colvar.reference
new file mode 100644
index 000000000..f8c55b929
--- /dev/null
+++ b/regtest/crystallization/rt-average-vec/colvar.reference
@@ -0,0 +1,2 @@
+#! FIELDS time a6a
+ 0.000000   0.3079
diff --git a/regtest/crystallization/rt-average-vec/config b/regtest/crystallization/rt-average-vec/config
new file mode 100644
index 000000000..2048daf60
--- /dev/null
+++ b/regtest/crystallization/rt-average-vec/config
@@ -0,0 +1,3 @@
+type=driver
+# this is to test a different name
+arg="--plumed plumed.dat --ixyz LJ75C_global-minima.xyz"
diff --git a/regtest/crystallization/rt-average-vec/derivatives.reference b/regtest/crystallization/rt-average-vec/derivatives.reference
new file mode 100644
index 000000000..d20a6882e
--- /dev/null
+++ b/regtest/crystallization/rt-average-vec/derivatives.reference
@@ -0,0 +1,235 @@
+#! FIELDS time parameter a6a
+ 0.000000 0  -0.0122
+ 0.000000 1  -0.0019
+ 0.000000 2  -0.0029
+ 0.000000 3   0.0122
+ 0.000000 4   0.0019
+ 0.000000 5   0.0029
+ 0.000000 6  -0.0006
+ 0.000000 7   0.0021
+ 0.000000 8  -0.0015
+ 0.000000 9   0.0006
+ 0.000000 10   0.0023
+ 0.000000 11  -0.0012
+ 0.000000 12   0.0011
+ 0.000000 13  -0.0024
+ 0.000000 14  -0.0001
+ 0.000000 15  -0.0002
+ 0.000000 16  -0.0026
+ 0.000000 17  -0.0003
+ 0.000000 18  -0.0010
+ 0.000000 19  -0.0011
+ 0.000000 20   0.0022
+ 0.000000 21   0.0002
+ 0.000000 22  -0.0010
+ 0.000000 23   0.0025
+ 0.000000 24   0.0000
+ 0.000000 25  -0.0006
+ 0.000000 26  -0.0026
+ 0.000000 27  -0.0001
+ 0.000000 28   0.0020
+ 0.000000 29   0.0018
+ 0.000000 30   0.0013
+ 0.000000 31  -0.0005
+ 0.000000 32  -0.0023
+ 0.000000 33  -0.0013
+ 0.000000 34   0.0018
+ 0.000000 35   0.0014
+ 0.000000 36   0.0001
+ 0.000000 37  -0.0007
+ 0.000000 38  -0.0026
+ 0.000000 39  -0.0013
+ 0.000000 40   0.0018
+ 0.000000 41   0.0015
+ 0.000000 42  -0.0001
+ 0.000000 43   0.0020
+ 0.000000 44   0.0017
+ 0.000000 45   0.0013
+ 0.000000 46  -0.0004
+ 0.000000 47  -0.0023
+ 0.000000 48  -0.0010
+ 0.000000 49  -0.0012
+ 0.000000 50   0.0022
+ 0.000000 51   0.0002
+ 0.000000 52  -0.0009
+ 0.000000 53   0.0025
+ 0.000000 54  -0.0002
+ 0.000000 55  -0.0026
+ 0.000000 56  -0.0004
+ 0.000000 57   0.0010
+ 0.000000 58  -0.0025
+ 0.000000 59   0.0000
+ 0.000000 60   0.0006
+ 0.000000 61   0.0023
+ 0.000000 62  -0.0012
+ 0.000000 63  -0.0007
+ 0.000000 64   0.0021
+ 0.000000 65  -0.0014
+ 0.000000 66  -0.0023
+ 0.000000 67  -0.0001
+ 0.000000 68  -0.0011
+ 0.000000 69   0.0026
+ 0.000000 70  -0.0001
+ 0.000000 71   0.0002
+ 0.000000 72   0.0023
+ 0.000000 73   0.0010
+ 0.000000 74   0.0006
+ 0.000000 75  -0.0024
+ 0.000000 76  -0.0009
+ 0.000000 77  -0.0003
+ 0.000000 78  -0.0026
+ 0.000000 79  -0.0002
+ 0.000000 80  -0.0000
+ 0.000000 81   0.0023
+ 0.000000 82   0.0005
+ 0.000000 83   0.0011
+ 0.000000 84   0.0024
+ 0.000000 85  -0.0001
+ 0.000000 86   0.0009
+ 0.000000 87  -0.0025
+ 0.000000 88   0.0002
+ 0.000000 89  -0.0005
+ 0.000000 90  -0.0023
+ 0.000000 91  -0.0008
+ 0.000000 92  -0.0010
+ 0.000000 93   0.0025
+ 0.000000 94   0.0006
+ 0.000000 95   0.0000
+ 0.000000 96  -0.0037
+ 0.000000 97  -0.0005
+ 0.000000 98  -0.0011
+ 0.000000 99   0.0037
+ 0.000000 100   0.0008
+ 0.000000 101   0.0009
+ 0.000000 102   0.0038
+ 0.000000 103   0.0004
+ 0.000000 104   0.0008
+ 0.000000 105  -0.0037
+ 0.000000 106  -0.0007
+ 0.000000 107  -0.0010
+ 0.000000 108  -0.0038
+ 0.000000 109  -0.0008
+ 0.000000 110  -0.0008
+ 0.000000 111   0.0037
+ 0.000000 112   0.0006
+ 0.000000 113   0.0011
+ 0.000000 114  -0.0038
+ 0.000000 115  -0.0005
+ 0.000000 116  -0.0007
+ 0.000000 117  -0.0038
+ 0.000000 118  -0.0004
+ 0.000000 119  -0.0009
+ 0.000000 120   0.0038
+ 0.000000 121   0.0004
+ 0.000000 122   0.0010
+ 0.000000 123   0.0038
+ 0.000000 124   0.0007
+ 0.000000 125   0.0007
+ 0.000000 126   0.0018
+ 0.000000 127   0.0010
+ 0.000000 128   0.0000
+ 0.000000 129  -0.0019
+ 0.000000 130  -0.0006
+ 0.000000 131   0.0003
+ 0.000000 132  -0.0016
+ 0.000000 133  -0.0011
+ 0.000000 134  -0.0005
+ 0.000000 135   0.0019
+ 0.000000 136  -0.0005
+ 0.000000 137   0.0004
+ 0.000000 138   0.0020
+ 0.000000 139   0.0001
+ 0.000000 140  -0.0004
+ 0.000000 141  -0.0020
+ 0.000000 142   0.0003
+ 0.000000 143   0.0001
+ 0.000000 144  -0.0018
+ 0.000000 145   0.0004
+ 0.000000 146  -0.0008
+ 0.000000 147   0.0016
+ 0.000000 148  -0.0001
+ 0.000000 149   0.0012
+ 0.000000 150  -0.0016
+ 0.000000 151  -0.0004
+ 0.000000 152  -0.0012
+ 0.000000 153   0.0016
+ 0.000000 154   0.0009
+ 0.000000 155   0.0009
+ 0.000000 156   0.0000
+ 0.000000 157  -0.0013
+ 0.000000 158   0.0008
+ 0.000000 159  -0.0004
+ 0.000000 160   0.0003
+ 0.000000 161   0.0015
+ 0.000000 162  -0.0003
+ 0.000000 163   0.0015
+ 0.000000 164   0.0001
+ 0.000000 165   0.0002
+ 0.000000 166   0.0006
+ 0.000000 167  -0.0014
+ 0.000000 168   0.0004
+ 0.000000 169  -0.0012
+ 0.000000 170  -0.0010
+ 0.000000 171  -0.0001
+ 0.000000 172  -0.0002
+ 0.000000 173   0.0004
+ 0.000000 174   0.0001
+ 0.000000 175  -0.0005
+ 0.000000 176  -0.0000
+ 0.000000 177  -0.0000
+ 0.000000 178   0.0004
+ 0.000000 179  -0.0002
+ 0.000000 180  -0.0001
+ 0.000000 181   0.0003
+ 0.000000 182   0.0003
+ 0.000000 183   0.0001
+ 0.000000 184  -0.0001
+ 0.000000 185  -0.0004
+ 0.000000 186  -0.0005
+ 0.000000 187  -0.0001
+ 0.000000 188  -0.0001
+ 0.000000 189   0.0005
+ 0.000000 190   0.0001
+ 0.000000 191   0.0001
+ 0.000000 192  -0.0002
+ 0.000000 193  -0.0003
+ 0.000000 194  -0.0001
+ 0.000000 195   0.0003
+ 0.000000 196  -0.0003
+ 0.000000 197   0.0000
+ 0.000000 198  -0.0002
+ 0.000000 199  -0.0002
+ 0.000000 200   0.0002
+ 0.000000 201  -0.0001
+ 0.000000 202  -0.0001
+ 0.000000 203  -0.0003
+ 0.000000 204   0.0003
+ 0.000000 205  -0.0000
+ 0.000000 206  -0.0002
+ 0.000000 207   0.0002
+ 0.000000 208  -0.0001
+ 0.000000 209   0.0003
+ 0.000000 210   0.0001
+ 0.000000 211   0.0003
+ 0.000000 212   0.0002
+ 0.000000 213  -0.0003
+ 0.000000 214   0.0002
+ 0.000000 215   0.0001
+ 0.000000 216   0.0002
+ 0.000000 217   0.0003
+ 0.000000 218  -0.0001
+ 0.000000 219  -0.0002
+ 0.000000 220   0.0002
+ 0.000000 221  -0.0002
+ 0.000000 222   0.0000
+ 0.000000 223   0.0000
+ 0.000000 224   0.0000
+ 0.000000 225   0.1428
+ 0.000000 226   0.0344
+ 0.000000 227   0.0531
+ 0.000000 228   0.0344
+ 0.000000 229  -0.0751
+ 0.000000 230   0.0082
+ 0.000000 231   0.0531
+ 0.000000 232   0.0082
+ 0.000000 233  -0.0678
diff --git a/regtest/crystallization/rt-average-vec/plumed.dat b/regtest/crystallization/rt-average-vec/plumed.dat
new file mode 100644
index 000000000..20f3aca06
--- /dev/null
+++ b/regtest/crystallization/rt-average-vec/plumed.dat
@@ -0,0 +1,5 @@
+Q6 SPECIES=1-75 SWITCH={GAUSSIAN D_0=1.391 R_0=0.01} LABEL=q6 
+AVERAGE_VECTOR ARG=q6 LABEL=a6a
+
+PRINT ARG=a6a FILE=colvar FMT=%8.4f
+DUMPDERIVATIVES ARG=a6a FILE=derivatives FMT=%8.4f
diff --git a/regtest/crystallization/rt-averaged-q6-lowmem/64.xyz b/regtest/crystallization/rt-averaged-q6-lowmem/64.xyz
new file mode 100755
index 000000000..90b3ae19c
--- /dev/null
+++ b/regtest/crystallization/rt-averaged-q6-lowmem/64.xyz
@@ -0,0 +1,66 @@
+   64
+12.41642 12.41642 12.41642 
+  Ge       1.473000000000      2.211000000000      8.700200000000
+  Ge       4.886500000000      3.830000000000      6.593500000000
+  Ge       3.807000000000      1.978700000000     10.045000000000
+  Ge       5.002000000000      3.883500000000      1.357000000000
+  Ge       9.636000000000      1.604000000000      8.697700000000
+  Ge       6.559800000000     11.084000000000      9.650400000000
+  Ge       0.627000000000      0.390000000000      2.224300000000
+  Ge       3.341900000000      6.765300000000      1.369500000000
+  Ge       5.032000000000      9.650500000000      2.785000000000
+  Ge       1.682700000000     10.392700000000      5.459500000000
+  Ge       3.517300000000     12.039000000000      5.930600000000
+  Ge       1.072000000000      5.374900000000     12.335000000000
+  Ge       0.863390000000     11.308000000000      0.275000000000
+  Ge       5.867800000000      0.672000000000      6.605200000000
+  Ge       3.961000000000      8.414000000000      8.691600000000
+  Ge      11.570960000000     10.444000000000      2.125000000000
+  Ge       1.736000000000      6.845200000000      6.129000000000
+  Ge       7.557300000000      8.842800000000      6.611800000000
+  Ge       2.785800000000      2.591200000000      1.833300000000
+  Ge      11.564000000000     11.555000000000     10.928000000000
+  Ge       3.324000000000     11.334000000000     12.095000000000
+  Ge      10.532000000000      9.377700000000      6.724000000000
+  Ge       7.157000000000     11.468000000000     12.063000000000
+  Ge       0.027000000000      4.622000000000      5.996200000000
+  Ge       4.564000000000      6.513200000000      5.370200000000
+  Ge      12.189770000000      7.981000000000      2.257000000000
+  Ge       8.973100000000      0.437000000000      4.852800000000
+  Ge       9.086200000000      9.857000000000      0.975000000000
+  Ge       6.516500000000     12.170000000000      2.438600000000
+  Ge       8.955900000000      4.612000000000      4.478000000000
+  Ge       7.419000000000      3.301600000000      0.450000000000
+  Ge      10.808000000000      7.170600000000     11.109000000000
+  Te       4.818200000000      9.096200000000      6.189300000000
+  Te      10.663400000000      6.726900000000      5.343000000000
+  Te       7.021700000000      4.814600000000     10.649000000000
+  Te       3.253500000000      5.713300000000      8.267800000000
+  Te      10.322000000000      1.250000000000      2.209500000000
+  Te       0.300000000000      5.033000000000      8.902400000000
+  Te      12.092000000000      0.227000000000      8.527200000000
+  Te       6.329000000000      2.634100000000      8.525500000000
+  Te       8.044800000000     11.712000000000      7.575400000000
+  Te       2.150000000000      8.302000000000      3.591400000000
+  Te      11.581000000000     11.201000000000      4.824700000000
+  Te       3.960900000000      4.755000000000     11.528710000000
+  Te       3.815300000000     12.139000000000      3.263700000000
+  Te       9.419700000000      7.232700000000      1.010000000000
+  Te       1.211700000000      1.726300000000     12.223470000000
+  Te       0.798460000000      8.988100000000      7.517700000000
+  Te      10.078000000000      9.503000000000      9.977500000000
+  Te       9.336700000000      0.894000000000     11.469560000000
+  Te       7.251000000000      5.783400000000      6.399000000000
+  Te       3.740000000000     11.515000000000      9.383700000000
+  Te      10.329000000000      2.726600000000      5.835100000000
+  Te       6.722900000000      8.386100000000      9.226500000000
+  Te       1.247000000000      4.660000000000      2.609100000000
+  Te       5.628500000000      6.170200000000      2.845000000000
+  Te       4.742900000000      9.191800000000      0.212000000000
+  Te       5.134400000000      0.984830000000     12.244000000000
+  Te       8.033800000000     10.061100000000      3.578600000000
+  Te       9.840000000000      4.825000000000      9.743000000000
+  Te       6.760000000000      2.189000000000      4.410700000000
+  Te       2.334000000000      2.201000000000      6.079000000000
+  Te       9.930600000000      3.982900000000      1.562000000000
+  Te       0.806810000000      8.091100000000     12.264000000000
diff --git a/regtest/crystallization/rt-averaged-q6-lowmem/Makefile b/regtest/crystallization/rt-averaged-q6-lowmem/Makefile
new file mode 100644
index 000000000..3703b27ce
--- /dev/null
+++ b/regtest/crystallization/rt-averaged-q6-lowmem/Makefile
@@ -0,0 +1 @@
+include ../../scripts/test.make
diff --git a/regtest/crystallization/rt-averaged-q6-lowmem/colv.reference b/regtest/crystallization/rt-averaged-q6-lowmem/colv.reference
new file mode 100644
index 000000000..8d69c80ee
--- /dev/null
+++ b/regtest/crystallization/rt-averaged-q6-lowmem/colv.reference
@@ -0,0 +1,2 @@
+#! FIELDS time q6.mean
+ 0.000000 0.245096
diff --git a/regtest/crystallization/rt-averaged-q6-lowmem/colv3.reference b/regtest/crystallization/rt-averaged-q6-lowmem/colv3.reference
new file mode 100644
index 000000000..bb98831d1
--- /dev/null
+++ b/regtest/crystallization/rt-averaged-q6-lowmem/colv3.reference
@@ -0,0 +1,2 @@
+#! FIELDS time w6.mean
+ 0.000000 0.065847
diff --git a/regtest/crystallization/rt-averaged-q6-lowmem/config b/regtest/crystallization/rt-averaged-q6-lowmem/config
new file mode 100644
index 000000000..e07432072
--- /dev/null
+++ b/regtest/crystallization/rt-averaged-q6-lowmem/config
@@ -0,0 +1,3 @@
+type=driver
+# this is to test a different name
+arg="--plumed plumed.dat --ixyz 64.xyz"
diff --git a/regtest/crystallization/rt-averaged-q6-lowmem/deriv3.reference b/regtest/crystallization/rt-averaged-q6-lowmem/deriv3.reference
new file mode 100644
index 000000000..a4db13063
--- /dev/null
+++ b/regtest/crystallization/rt-averaged-q6-lowmem/deriv3.reference
@@ -0,0 +1,202 @@
+#! FIELDS time parameter w6.mean
+ 0.000000 0   0.0018
+ 0.000000 1   0.0008
+ 0.000000 2  -0.0002
+ 0.000000 3  -0.0006
+ 0.000000 4  -0.0002
+ 0.000000 5  -0.0068
+ 0.000000 6   0.0016
+ 0.000000 7   0.0024
+ 0.000000 8  -0.0052
+ 0.000000 9  -0.0011
+ 0.000000 10  -0.0004
+ 0.000000 11   0.0032
+ 0.000000 12   0.0009
+ 0.000000 13   0.0012
+ 0.000000 14  -0.0001
+ 0.000000 15  -0.0013
+ 0.000000 16  -0.0039
+ 0.000000 17  -0.0010
+ 0.000000 18  -0.0018
+ 0.000000 19   0.0008
+ 0.000000 20   0.0005
+ 0.000000 21  -0.0016
+ 0.000000 22  -0.0004
+ 0.000000 23  -0.0013
+ 0.000000 24   0.0041
+ 0.000000 25  -0.0011
+ 0.000000 26  -0.0032
+ 0.000000 27  -0.0009
+ 0.000000 28  -0.0018
+ 0.000000 29   0.0040
+ 0.000000 30  -0.0014
+ 0.000000 31   0.0030
+ 0.000000 32   0.0020
+ 0.000000 33   0.0010
+ 0.000000 34  -0.0015
+ 0.000000 35   0.0025
+ 0.000000 36   0.0000
+ 0.000000 37   0.0010
+ 0.000000 38  -0.0022
+ 0.000000 39  -0.0003
+ 0.000000 40   0.0014
+ 0.000000 41  -0.0002
+ 0.000000 42   0.0003
+ 0.000000 43  -0.0000
+ 0.000000 44   0.0001
+ 0.000000 45  -0.0000
+ 0.000000 46  -0.0014
+ 0.000000 47  -0.0006
+ 0.000000 48  -0.0012
+ 0.000000 49   0.0000
+ 0.000000 50  -0.0018
+ 0.000000 51  -0.0005
+ 0.000000 52   0.0005
+ 0.000000 53   0.0001
+ 0.000000 54  -0.0012
+ 0.000000 55   0.0039
+ 0.000000 56   0.0024
+ 0.000000 57  -0.0011
+ 0.000000 58  -0.0029
+ 0.000000 59  -0.0025
+ 0.000000 60   0.0002
+ 0.000000 61  -0.0043
+ 0.000000 62  -0.0021
+ 0.000000 63  -0.0045
+ 0.000000 64   0.0030
+ 0.000000 65   0.0025
+ 0.000000 66  -0.0003
+ 0.000000 67  -0.0016
+ 0.000000 68   0.0003
+ 0.000000 69   0.0008
+ 0.000000 70  -0.0019
+ 0.000000 71  -0.0008
+ 0.000000 72   0.0011
+ 0.000000 73   0.0022
+ 0.000000 74   0.0026
+ 0.000000 75  -0.0006
+ 0.000000 76  -0.0032
+ 0.000000 77  -0.0009
+ 0.000000 78   0.0016
+ 0.000000 79  -0.0015
+ 0.000000 80   0.0008
+ 0.000000 81  -0.0002
+ 0.000000 82  -0.0003
+ 0.000000 83  -0.0006
+ 0.000000 84   0.0038
+ 0.000000 85   0.0018
+ 0.000000 86  -0.0012
+ 0.000000 87  -0.0006
+ 0.000000 88  -0.0017
+ 0.000000 89   0.0053
+ 0.000000 90   0.0004
+ 0.000000 91   0.0027
+ 0.000000 92   0.0013
+ 0.000000 93   0.0044
+ 0.000000 94   0.0031
+ 0.000000 95  -0.0037
+ 0.000000 96   0.0011
+ 0.000000 97  -0.0000
+ 0.000000 98   0.0011
+ 0.000000 99  -0.0003
+ 0.000000 100   0.0007
+ 0.000000 101  -0.0025
+ 0.000000 102  -0.0018
+ 0.000000 103  -0.0017
+ 0.000000 104  -0.0015
+ 0.000000 105   0.0034
+ 0.000000 106  -0.0002
+ 0.000000 107   0.0025
+ 0.000000 108   0.0017
+ 0.000000 109   0.0046
+ 0.000000 110   0.0002
+ 0.000000 111   0.0014
+ 0.000000 112   0.0005
+ 0.000000 113  -0.0020
+ 0.000000 114   0.0051
+ 0.000000 115   0.0000
+ 0.000000 116  -0.0030
+ 0.000000 117   0.0030
+ 0.000000 118  -0.0012
+ 0.000000 119   0.0041
+ 0.000000 120  -0.0030
+ 0.000000 121  -0.0009
+ 0.000000 122   0.0019
+ 0.000000 123   0.0034
+ 0.000000 124  -0.0002
+ 0.000000 125  -0.0045
+ 0.000000 126   0.0011
+ 0.000000 127  -0.0012
+ 0.000000 128   0.0004
+ 0.000000 129   0.0021
+ 0.000000 130  -0.0040
+ 0.000000 131  -0.0011
+ 0.000000 132  -0.0010
+ 0.000000 133  -0.0012
+ 0.000000 134  -0.0025
+ 0.000000 135  -0.0004
+ 0.000000 136  -0.0017
+ 0.000000 137   0.0011
+ 0.000000 138   0.0039
+ 0.000000 139  -0.0019
+ 0.000000 140  -0.0017
+ 0.000000 141  -0.0004
+ 0.000000 142   0.0017
+ 0.000000 143   0.0045
+ 0.000000 144   0.0005
+ 0.000000 145   0.0003
+ 0.000000 146   0.0001
+ 0.000000 147  -0.0043
+ 0.000000 148   0.0001
+ 0.000000 149  -0.0005
+ 0.000000 150  -0.0012
+ 0.000000 151   0.0029
+ 0.000000 152   0.0046
+ 0.000000 153  -0.0024
+ 0.000000 154   0.0018
+ 0.000000 155  -0.0015
+ 0.000000 156   0.0025
+ 0.000000 157   0.0005
+ 0.000000 158  -0.0039
+ 0.000000 159  -0.0007
+ 0.000000 160  -0.0028
+ 0.000000 161  -0.0002
+ 0.000000 162  -0.0054
+ 0.000000 163  -0.0020
+ 0.000000 164   0.0052
+ 0.000000 165   0.0020
+ 0.000000 166  -0.0019
+ 0.000000 167   0.0049
+ 0.000000 168  -0.0006
+ 0.000000 169   0.0044
+ 0.000000 170   0.0033
+ 0.000000 171   0.0004
+ 0.000000 172   0.0019
+ 0.000000 173  -0.0009
+ 0.000000 174   0.0006
+ 0.000000 175  -0.0041
+ 0.000000 176   0.0042
+ 0.000000 177  -0.0045
+ 0.000000 178   0.0009
+ 0.000000 179   0.0022
+ 0.000000 180  -0.0009
+ 0.000000 181   0.0016
+ 0.000000 182  -0.0062
+ 0.000000 183  -0.0018
+ 0.000000 184  -0.0019
+ 0.000000 185  -0.0013
+ 0.000000 186  -0.0031
+ 0.000000 187   0.0001
+ 0.000000 188   0.0002
+ 0.000000 189  -0.0034
+ 0.000000 190   0.0051
+ 0.000000 191  -0.0007
+ 0.000000 192  -0.0552
+ 0.000000 193  -0.0319
+ 0.000000 194  -0.0141
+ 0.000000 195  -0.0319
+ 0.000000 196  -0.0972
+ 0.000000 197   0.0628
+ 0.000000 198  -0.0141
+ 0.000000 199   0.0628
+ 0.000000 200  -0.0608
diff --git a/regtest/crystallization/rt-averaged-q6-lowmem/plumed.dat b/regtest/crystallization/rt-averaged-q6-lowmem/plumed.dat
new file mode 100644
index 000000000..d4e57b0e2
--- /dev/null
+++ b/regtest/crystallization/rt-averaged-q6-lowmem/plumed.dat
@@ -0,0 +1,7 @@
+Q6 SPECIES=1-64 D_0=3.0 R_0=1.5 MEAN LABEL=q6 
+PRINT ARG=q6.* FILE=colv 
+
+LOCAL_AVERAGE ARG=q6 SWITCH={RATIONAL D_0=3.0 R_0=1.5} MEAN LOWMEM LABEL=w6
+PRINT ARG=w6.* FILE=colv3
+DUMPDERIVATIVES ARG=w6.* FILE=deriv3 FMT=%8.4f
+
diff --git a/regtest/crystallization/rt-averaged-q6/64.xyz b/regtest/crystallization/rt-averaged-q6/64.xyz
new file mode 100755
index 000000000..90b3ae19c
--- /dev/null
+++ b/regtest/crystallization/rt-averaged-q6/64.xyz
@@ -0,0 +1,66 @@
+   64
+12.41642 12.41642 12.41642 
+  Ge       1.473000000000      2.211000000000      8.700200000000
+  Ge       4.886500000000      3.830000000000      6.593500000000
+  Ge       3.807000000000      1.978700000000     10.045000000000
+  Ge       5.002000000000      3.883500000000      1.357000000000
+  Ge       9.636000000000      1.604000000000      8.697700000000
+  Ge       6.559800000000     11.084000000000      9.650400000000
+  Ge       0.627000000000      0.390000000000      2.224300000000
+  Ge       3.341900000000      6.765300000000      1.369500000000
+  Ge       5.032000000000      9.650500000000      2.785000000000
+  Ge       1.682700000000     10.392700000000      5.459500000000
+  Ge       3.517300000000     12.039000000000      5.930600000000
+  Ge       1.072000000000      5.374900000000     12.335000000000
+  Ge       0.863390000000     11.308000000000      0.275000000000
+  Ge       5.867800000000      0.672000000000      6.605200000000
+  Ge       3.961000000000      8.414000000000      8.691600000000
+  Ge      11.570960000000     10.444000000000      2.125000000000
+  Ge       1.736000000000      6.845200000000      6.129000000000
+  Ge       7.557300000000      8.842800000000      6.611800000000
+  Ge       2.785800000000      2.591200000000      1.833300000000
+  Ge      11.564000000000     11.555000000000     10.928000000000
+  Ge       3.324000000000     11.334000000000     12.095000000000
+  Ge      10.532000000000      9.377700000000      6.724000000000
+  Ge       7.157000000000     11.468000000000     12.063000000000
+  Ge       0.027000000000      4.622000000000      5.996200000000
+  Ge       4.564000000000      6.513200000000      5.370200000000
+  Ge      12.189770000000      7.981000000000      2.257000000000
+  Ge       8.973100000000      0.437000000000      4.852800000000
+  Ge       9.086200000000      9.857000000000      0.975000000000
+  Ge       6.516500000000     12.170000000000      2.438600000000
+  Ge       8.955900000000      4.612000000000      4.478000000000
+  Ge       7.419000000000      3.301600000000      0.450000000000
+  Ge      10.808000000000      7.170600000000     11.109000000000
+  Te       4.818200000000      9.096200000000      6.189300000000
+  Te      10.663400000000      6.726900000000      5.343000000000
+  Te       7.021700000000      4.814600000000     10.649000000000
+  Te       3.253500000000      5.713300000000      8.267800000000
+  Te      10.322000000000      1.250000000000      2.209500000000
+  Te       0.300000000000      5.033000000000      8.902400000000
+  Te      12.092000000000      0.227000000000      8.527200000000
+  Te       6.329000000000      2.634100000000      8.525500000000
+  Te       8.044800000000     11.712000000000      7.575400000000
+  Te       2.150000000000      8.302000000000      3.591400000000
+  Te      11.581000000000     11.201000000000      4.824700000000
+  Te       3.960900000000      4.755000000000     11.528710000000
+  Te       3.815300000000     12.139000000000      3.263700000000
+  Te       9.419700000000      7.232700000000      1.010000000000
+  Te       1.211700000000      1.726300000000     12.223470000000
+  Te       0.798460000000      8.988100000000      7.517700000000
+  Te      10.078000000000      9.503000000000      9.977500000000
+  Te       9.336700000000      0.894000000000     11.469560000000
+  Te       7.251000000000      5.783400000000      6.399000000000
+  Te       3.740000000000     11.515000000000      9.383700000000
+  Te      10.329000000000      2.726600000000      5.835100000000
+  Te       6.722900000000      8.386100000000      9.226500000000
+  Te       1.247000000000      4.660000000000      2.609100000000
+  Te       5.628500000000      6.170200000000      2.845000000000
+  Te       4.742900000000      9.191800000000      0.212000000000
+  Te       5.134400000000      0.984830000000     12.244000000000
+  Te       8.033800000000     10.061100000000      3.578600000000
+  Te       9.840000000000      4.825000000000      9.743000000000
+  Te       6.760000000000      2.189000000000      4.410700000000
+  Te       2.334000000000      2.201000000000      6.079000000000
+  Te       9.930600000000      3.982900000000      1.562000000000
+  Te       0.806810000000      8.091100000000     12.264000000000
diff --git a/regtest/crystallization/rt-averaged-q6/Makefile b/regtest/crystallization/rt-averaged-q6/Makefile
new file mode 100644
index 000000000..3703b27ce
--- /dev/null
+++ b/regtest/crystallization/rt-averaged-q6/Makefile
@@ -0,0 +1 @@
+include ../../scripts/test.make
diff --git a/regtest/crystallization/rt-averaged-q6/colv.reference b/regtest/crystallization/rt-averaged-q6/colv.reference
new file mode 100644
index 000000000..8d69c80ee
--- /dev/null
+++ b/regtest/crystallization/rt-averaged-q6/colv.reference
@@ -0,0 +1,2 @@
+#! FIELDS time q6.mean
+ 0.000000 0.245096
diff --git a/regtest/crystallization/rt-averaged-q6/colv3.reference b/regtest/crystallization/rt-averaged-q6/colv3.reference
new file mode 100644
index 000000000..bb98831d1
--- /dev/null
+++ b/regtest/crystallization/rt-averaged-q6/colv3.reference
@@ -0,0 +1,2 @@
+#! FIELDS time w6.mean
+ 0.000000 0.065847
diff --git a/regtest/crystallization/rt-averaged-q6/config b/regtest/crystallization/rt-averaged-q6/config
new file mode 100644
index 000000000..e07432072
--- /dev/null
+++ b/regtest/crystallization/rt-averaged-q6/config
@@ -0,0 +1,3 @@
+type=driver
+# this is to test a different name
+arg="--plumed plumed.dat --ixyz 64.xyz"
diff --git a/regtest/crystallization/rt-averaged-q6/deriv.reference b/regtest/crystallization/rt-averaged-q6/deriv.reference
new file mode 100644
index 000000000..a7c522e73
--- /dev/null
+++ b/regtest/crystallization/rt-averaged-q6/deriv.reference
@@ -0,0 +1,202 @@
+#! FIELDS time parameter q6.mean
+ 0.000000 0   0.0012
+ 0.000000 1   0.0016
+ 0.000000 2  -0.0017
+ 0.000000 3  -0.0003
+ 0.000000 4   0.0017
+ 0.000000 5  -0.0031
+ 0.000000 6  -0.0013
+ 0.000000 7  -0.0015
+ 0.000000 8  -0.0023
+ 0.000000 9   0.0000
+ 0.000000 10   0.0022
+ 0.000000 11   0.0030
+ 0.000000 12  -0.0009
+ 0.000000 13  -0.0010
+ 0.000000 14  -0.0002
+ 0.000000 15  -0.0018
+ 0.000000 16  -0.0026
+ 0.000000 17  -0.0006
+ 0.000000 18   0.0009
+ 0.000000 19  -0.0008
+ 0.000000 20   0.0013
+ 0.000000 21  -0.0024
+ 0.000000 22   0.0041
+ 0.000000 23  -0.0008
+ 0.000000 24   0.0026
+ 0.000000 25  -0.0023
+ 0.000000 26  -0.0015
+ 0.000000 27  -0.0021
+ 0.000000 28   0.0029
+ 0.000000 29   0.0037
+ 0.000000 30  -0.0017
+ 0.000000 31  -0.0015
+ 0.000000 32   0.0018
+ 0.000000 33  -0.0027
+ 0.000000 34  -0.0000
+ 0.000000 35   0.0003
+ 0.000000 36   0.0006
+ 0.000000 37  -0.0016
+ 0.000000 38   0.0004
+ 0.000000 39  -0.0020
+ 0.000000 40   0.0019
+ 0.000000 41  -0.0005
+ 0.000000 42   0.0016
+ 0.000000 43  -0.0053
+ 0.000000 44   0.0001
+ 0.000000 45  -0.0031
+ 0.000000 46  -0.0020
+ 0.000000 47  -0.0020
+ 0.000000 48  -0.0014
+ 0.000000 49   0.0010
+ 0.000000 50  -0.0059
+ 0.000000 51   0.0021
+ 0.000000 52  -0.0023
+ 0.000000 53   0.0027
+ 0.000000 54   0.0011
+ 0.000000 55   0.0006
+ 0.000000 56  -0.0010
+ 0.000000 57  -0.0005
+ 0.000000 58  -0.0017
+ 0.000000 59  -0.0010
+ 0.000000 60  -0.0001
+ 0.000000 61   0.0010
+ 0.000000 62   0.0016
+ 0.000000 63   0.0017
+ 0.000000 64   0.0000
+ 0.000000 65  -0.0029
+ 0.000000 66   0.0003
+ 0.000000 67   0.0033
+ 0.000000 68  -0.0041
+ 0.000000 69  -0.0007
+ 0.000000 70   0.0014
+ 0.000000 71  -0.0004
+ 0.000000 72   0.0029
+ 0.000000 73   0.0013
+ 0.000000 74  -0.0008
+ 0.000000 75   0.0017
+ 0.000000 76  -0.0046
+ 0.000000 77  -0.0000
+ 0.000000 78   0.0009
+ 0.000000 79  -0.0008
+ 0.000000 80   0.0009
+ 0.000000 81  -0.0001
+ 0.000000 82  -0.0002
+ 0.000000 83  -0.0006
+ 0.000000 84   0.0009
+ 0.000000 85  -0.0012
+ 0.000000 86   0.0001
+ 0.000000 87   0.0015
+ 0.000000 88   0.0018
+ 0.000000 89  -0.0039
+ 0.000000 90   0.0008
+ 0.000000 91   0.0005
+ 0.000000 92   0.0029
+ 0.000000 93   0.0025
+ 0.000000 94   0.0016
+ 0.000000 95   0.0016
+ 0.000000 96  -0.0017
+ 0.000000 97  -0.0001
+ 0.000000 98   0.0022
+ 0.000000 99  -0.0024
+ 0.000000 100   0.0009
+ 0.000000 101   0.0004
+ 0.000000 102  -0.0017
+ 0.000000 103  -0.0014
+ 0.000000 104   0.0004
+ 0.000000 105   0.0002
+ 0.000000 106  -0.0033
+ 0.000000 107  -0.0020
+ 0.000000 108  -0.0001
+ 0.000000 109   0.0039
+ 0.000000 110   0.0014
+ 0.000000 111  -0.0004
+ 0.000000 112   0.0018
+ 0.000000 113  -0.0021
+ 0.000000 114   0.0037
+ 0.000000 115  -0.0004
+ 0.000000 116   0.0011
+ 0.000000 117   0.0042
+ 0.000000 118  -0.0016
+ 0.000000 119  -0.0004
+ 0.000000 120   0.0011
+ 0.000000 121  -0.0003
+ 0.000000 122   0.0016
+ 0.000000 123   0.0018
+ 0.000000 124   0.0034
+ 0.000000 125   0.0002
+ 0.000000 126   0.0009
+ 0.000000 127   0.0013
+ 0.000000 128   0.0007
+ 0.000000 129   0.0010
+ 0.000000 130  -0.0032
+ 0.000000 131   0.0021
+ 0.000000 132  -0.0027
+ 0.000000 133  -0.0000
+ 0.000000 134   0.0009
+ 0.000000 135  -0.0045
+ 0.000000 136  -0.0014
+ 0.000000 137  -0.0014
+ 0.000000 138   0.0004
+ 0.000000 139  -0.0003
+ 0.000000 140  -0.0025
+ 0.000000 141   0.0032
+ 0.000000 142   0.0037
+ 0.000000 143   0.0005
+ 0.000000 144  -0.0003
+ 0.000000 145   0.0047
+ 0.000000 146  -0.0015
+ 0.000000 147  -0.0011
+ 0.000000 148   0.0004
+ 0.000000 149  -0.0015
+ 0.000000 150  -0.0006
+ 0.000000 151  -0.0028
+ 0.000000 152   0.0036
+ 0.000000 153  -0.0040
+ 0.000000 154  -0.0003
+ 0.000000 155  -0.0031
+ 0.000000 156   0.0021
+ 0.000000 157  -0.0002
+ 0.000000 158   0.0002
+ 0.000000 159   0.0016
+ 0.000000 160   0.0010
+ 0.000000 161   0.0036
+ 0.000000 162  -0.0004
+ 0.000000 163  -0.0028
+ 0.000000 164   0.0055
+ 0.000000 165   0.0014
+ 0.000000 166  -0.0034
+ 0.000000 167   0.0023
+ 0.000000 168  -0.0002
+ 0.000000 169  -0.0002
+ 0.000000 170  -0.0006
+ 0.000000 171  -0.0009
+ 0.000000 172   0.0009
+ 0.000000 173  -0.0003
+ 0.000000 174   0.0032
+ 0.000000 175  -0.0053
+ 0.000000 176   0.0037
+ 0.000000 177  -0.0019
+ 0.000000 178  -0.0020
+ 0.000000 179   0.0011
+ 0.000000 180  -0.0000
+ 0.000000 181   0.0060
+ 0.000000 182  -0.0033
+ 0.000000 183  -0.0027
+ 0.000000 184   0.0016
+ 0.000000 185   0.0005
+ 0.000000 186  -0.0009
+ 0.000000 187  -0.0031
+ 0.000000 188  -0.0009
+ 0.000000 189  -0.0005
+ 0.000000 190   0.0049
+ 0.000000 191   0.0003
+ 0.000000 192  -0.1431
+ 0.000000 193  -0.0326
+ 0.000000 194   0.0101
+ 0.000000 195  -0.0326
+ 0.000000 196  -0.1712
+ 0.000000 197   0.0351
+ 0.000000 198   0.0101
+ 0.000000 199   0.0351
+ 0.000000 200  -0.1192
diff --git a/regtest/crystallization/rt-averaged-q6/deriv3.reference b/regtest/crystallization/rt-averaged-q6/deriv3.reference
new file mode 100644
index 000000000..a4db13063
--- /dev/null
+++ b/regtest/crystallization/rt-averaged-q6/deriv3.reference
@@ -0,0 +1,202 @@
+#! FIELDS time parameter w6.mean
+ 0.000000 0   0.0018
+ 0.000000 1   0.0008
+ 0.000000 2  -0.0002
+ 0.000000 3  -0.0006
+ 0.000000 4  -0.0002
+ 0.000000 5  -0.0068
+ 0.000000 6   0.0016
+ 0.000000 7   0.0024
+ 0.000000 8  -0.0052
+ 0.000000 9  -0.0011
+ 0.000000 10  -0.0004
+ 0.000000 11   0.0032
+ 0.000000 12   0.0009
+ 0.000000 13   0.0012
+ 0.000000 14  -0.0001
+ 0.000000 15  -0.0013
+ 0.000000 16  -0.0039
+ 0.000000 17  -0.0010
+ 0.000000 18  -0.0018
+ 0.000000 19   0.0008
+ 0.000000 20   0.0005
+ 0.000000 21  -0.0016
+ 0.000000 22  -0.0004
+ 0.000000 23  -0.0013
+ 0.000000 24   0.0041
+ 0.000000 25  -0.0011
+ 0.000000 26  -0.0032
+ 0.000000 27  -0.0009
+ 0.000000 28  -0.0018
+ 0.000000 29   0.0040
+ 0.000000 30  -0.0014
+ 0.000000 31   0.0030
+ 0.000000 32   0.0020
+ 0.000000 33   0.0010
+ 0.000000 34  -0.0015
+ 0.000000 35   0.0025
+ 0.000000 36   0.0000
+ 0.000000 37   0.0010
+ 0.000000 38  -0.0022
+ 0.000000 39  -0.0003
+ 0.000000 40   0.0014
+ 0.000000 41  -0.0002
+ 0.000000 42   0.0003
+ 0.000000 43  -0.0000
+ 0.000000 44   0.0001
+ 0.000000 45  -0.0000
+ 0.000000 46  -0.0014
+ 0.000000 47  -0.0006
+ 0.000000 48  -0.0012
+ 0.000000 49   0.0000
+ 0.000000 50  -0.0018
+ 0.000000 51  -0.0005
+ 0.000000 52   0.0005
+ 0.000000 53   0.0001
+ 0.000000 54  -0.0012
+ 0.000000 55   0.0039
+ 0.000000 56   0.0024
+ 0.000000 57  -0.0011
+ 0.000000 58  -0.0029
+ 0.000000 59  -0.0025
+ 0.000000 60   0.0002
+ 0.000000 61  -0.0043
+ 0.000000 62  -0.0021
+ 0.000000 63  -0.0045
+ 0.000000 64   0.0030
+ 0.000000 65   0.0025
+ 0.000000 66  -0.0003
+ 0.000000 67  -0.0016
+ 0.000000 68   0.0003
+ 0.000000 69   0.0008
+ 0.000000 70  -0.0019
+ 0.000000 71  -0.0008
+ 0.000000 72   0.0011
+ 0.000000 73   0.0022
+ 0.000000 74   0.0026
+ 0.000000 75  -0.0006
+ 0.000000 76  -0.0032
+ 0.000000 77  -0.0009
+ 0.000000 78   0.0016
+ 0.000000 79  -0.0015
+ 0.000000 80   0.0008
+ 0.000000 81  -0.0002
+ 0.000000 82  -0.0003
+ 0.000000 83  -0.0006
+ 0.000000 84   0.0038
+ 0.000000 85   0.0018
+ 0.000000 86  -0.0012
+ 0.000000 87  -0.0006
+ 0.000000 88  -0.0017
+ 0.000000 89   0.0053
+ 0.000000 90   0.0004
+ 0.000000 91   0.0027
+ 0.000000 92   0.0013
+ 0.000000 93   0.0044
+ 0.000000 94   0.0031
+ 0.000000 95  -0.0037
+ 0.000000 96   0.0011
+ 0.000000 97  -0.0000
+ 0.000000 98   0.0011
+ 0.000000 99  -0.0003
+ 0.000000 100   0.0007
+ 0.000000 101  -0.0025
+ 0.000000 102  -0.0018
+ 0.000000 103  -0.0017
+ 0.000000 104  -0.0015
+ 0.000000 105   0.0034
+ 0.000000 106  -0.0002
+ 0.000000 107   0.0025
+ 0.000000 108   0.0017
+ 0.000000 109   0.0046
+ 0.000000 110   0.0002
+ 0.000000 111   0.0014
+ 0.000000 112   0.0005
+ 0.000000 113  -0.0020
+ 0.000000 114   0.0051
+ 0.000000 115   0.0000
+ 0.000000 116  -0.0030
+ 0.000000 117   0.0030
+ 0.000000 118  -0.0012
+ 0.000000 119   0.0041
+ 0.000000 120  -0.0030
+ 0.000000 121  -0.0009
+ 0.000000 122   0.0019
+ 0.000000 123   0.0034
+ 0.000000 124  -0.0002
+ 0.000000 125  -0.0045
+ 0.000000 126   0.0011
+ 0.000000 127  -0.0012
+ 0.000000 128   0.0004
+ 0.000000 129   0.0021
+ 0.000000 130  -0.0040
+ 0.000000 131  -0.0011
+ 0.000000 132  -0.0010
+ 0.000000 133  -0.0012
+ 0.000000 134  -0.0025
+ 0.000000 135  -0.0004
+ 0.000000 136  -0.0017
+ 0.000000 137   0.0011
+ 0.000000 138   0.0039
+ 0.000000 139  -0.0019
+ 0.000000 140  -0.0017
+ 0.000000 141  -0.0004
+ 0.000000 142   0.0017
+ 0.000000 143   0.0045
+ 0.000000 144   0.0005
+ 0.000000 145   0.0003
+ 0.000000 146   0.0001
+ 0.000000 147  -0.0043
+ 0.000000 148   0.0001
+ 0.000000 149  -0.0005
+ 0.000000 150  -0.0012
+ 0.000000 151   0.0029
+ 0.000000 152   0.0046
+ 0.000000 153  -0.0024
+ 0.000000 154   0.0018
+ 0.000000 155  -0.0015
+ 0.000000 156   0.0025
+ 0.000000 157   0.0005
+ 0.000000 158  -0.0039
+ 0.000000 159  -0.0007
+ 0.000000 160  -0.0028
+ 0.000000 161  -0.0002
+ 0.000000 162  -0.0054
+ 0.000000 163  -0.0020
+ 0.000000 164   0.0052
+ 0.000000 165   0.0020
+ 0.000000 166  -0.0019
+ 0.000000 167   0.0049
+ 0.000000 168  -0.0006
+ 0.000000 169   0.0044
+ 0.000000 170   0.0033
+ 0.000000 171   0.0004
+ 0.000000 172   0.0019
+ 0.000000 173  -0.0009
+ 0.000000 174   0.0006
+ 0.000000 175  -0.0041
+ 0.000000 176   0.0042
+ 0.000000 177  -0.0045
+ 0.000000 178   0.0009
+ 0.000000 179   0.0022
+ 0.000000 180  -0.0009
+ 0.000000 181   0.0016
+ 0.000000 182  -0.0062
+ 0.000000 183  -0.0018
+ 0.000000 184  -0.0019
+ 0.000000 185  -0.0013
+ 0.000000 186  -0.0031
+ 0.000000 187   0.0001
+ 0.000000 188   0.0002
+ 0.000000 189  -0.0034
+ 0.000000 190   0.0051
+ 0.000000 191  -0.0007
+ 0.000000 192  -0.0552
+ 0.000000 193  -0.0319
+ 0.000000 194  -0.0141
+ 0.000000 195  -0.0319
+ 0.000000 196  -0.0972
+ 0.000000 197   0.0628
+ 0.000000 198  -0.0141
+ 0.000000 199   0.0628
+ 0.000000 200  -0.0608
diff --git a/regtest/crystallization/rt-averaged-q6/plumed.dat b/regtest/crystallization/rt-averaged-q6/plumed.dat
new file mode 100644
index 000000000..90d5b5775
--- /dev/null
+++ b/regtest/crystallization/rt-averaged-q6/plumed.dat
@@ -0,0 +1,10 @@
+Q6 SPECIES=1-64 D_0=3.0 R_0=1.5 MEAN LABEL=q6 
+# Q6 SPECIES=1-64 D_0=3.0 R_0=1.5 MEAN NUMERICAL_DERIVATIVES LABEL=q6n
+PRINT ARG=q6.* FILE=colv 
+DUMPDERIVATIVES ARG=q6.* FILE=deriv FMT=%8.4f
+
+LOCAL_AVERAGE ARG=q6 SWITCH={RATIONAL D_0=3.0 R_0=1.5} MEAN LABEL=w6
+# LOCAL_AVERAGE ARG=q6 SWITCH={RATIONAL D_0=3.0 R_0=1.5} MEAN NUMERICAL_DERIVATIVES LABEL=w6n
+PRINT ARG=w6.* FILE=colv3
+DUMPDERIVATIVES ARG=w6.* FILE=deriv3 FMT=%8.4f
+
diff --git a/regtest/crystallization/rt-nbonds-q6-lowmem/64.xyz b/regtest/crystallization/rt-nbonds-q6-lowmem/64.xyz
new file mode 100755
index 000000000..90b3ae19c
--- /dev/null
+++ b/regtest/crystallization/rt-nbonds-q6-lowmem/64.xyz
@@ -0,0 +1,66 @@
+   64
+12.41642 12.41642 12.41642 
+  Ge       1.473000000000      2.211000000000      8.700200000000
+  Ge       4.886500000000      3.830000000000      6.593500000000
+  Ge       3.807000000000      1.978700000000     10.045000000000
+  Ge       5.002000000000      3.883500000000      1.357000000000
+  Ge       9.636000000000      1.604000000000      8.697700000000
+  Ge       6.559800000000     11.084000000000      9.650400000000
+  Ge       0.627000000000      0.390000000000      2.224300000000
+  Ge       3.341900000000      6.765300000000      1.369500000000
+  Ge       5.032000000000      9.650500000000      2.785000000000
+  Ge       1.682700000000     10.392700000000      5.459500000000
+  Ge       3.517300000000     12.039000000000      5.930600000000
+  Ge       1.072000000000      5.374900000000     12.335000000000
+  Ge       0.863390000000     11.308000000000      0.275000000000
+  Ge       5.867800000000      0.672000000000      6.605200000000
+  Ge       3.961000000000      8.414000000000      8.691600000000
+  Ge      11.570960000000     10.444000000000      2.125000000000
+  Ge       1.736000000000      6.845200000000      6.129000000000
+  Ge       7.557300000000      8.842800000000      6.611800000000
+  Ge       2.785800000000      2.591200000000      1.833300000000
+  Ge      11.564000000000     11.555000000000     10.928000000000
+  Ge       3.324000000000     11.334000000000     12.095000000000
+  Ge      10.532000000000      9.377700000000      6.724000000000
+  Ge       7.157000000000     11.468000000000     12.063000000000
+  Ge       0.027000000000      4.622000000000      5.996200000000
+  Ge       4.564000000000      6.513200000000      5.370200000000
+  Ge      12.189770000000      7.981000000000      2.257000000000
+  Ge       8.973100000000      0.437000000000      4.852800000000
+  Ge       9.086200000000      9.857000000000      0.975000000000
+  Ge       6.516500000000     12.170000000000      2.438600000000
+  Ge       8.955900000000      4.612000000000      4.478000000000
+  Ge       7.419000000000      3.301600000000      0.450000000000
+  Ge      10.808000000000      7.170600000000     11.109000000000
+  Te       4.818200000000      9.096200000000      6.189300000000
+  Te      10.663400000000      6.726900000000      5.343000000000
+  Te       7.021700000000      4.814600000000     10.649000000000
+  Te       3.253500000000      5.713300000000      8.267800000000
+  Te      10.322000000000      1.250000000000      2.209500000000
+  Te       0.300000000000      5.033000000000      8.902400000000
+  Te      12.092000000000      0.227000000000      8.527200000000
+  Te       6.329000000000      2.634100000000      8.525500000000
+  Te       8.044800000000     11.712000000000      7.575400000000
+  Te       2.150000000000      8.302000000000      3.591400000000
+  Te      11.581000000000     11.201000000000      4.824700000000
+  Te       3.960900000000      4.755000000000     11.528710000000
+  Te       3.815300000000     12.139000000000      3.263700000000
+  Te       9.419700000000      7.232700000000      1.010000000000
+  Te       1.211700000000      1.726300000000     12.223470000000
+  Te       0.798460000000      8.988100000000      7.517700000000
+  Te      10.078000000000      9.503000000000      9.977500000000
+  Te       9.336700000000      0.894000000000     11.469560000000
+  Te       7.251000000000      5.783400000000      6.399000000000
+  Te       3.740000000000     11.515000000000      9.383700000000
+  Te      10.329000000000      2.726600000000      5.835100000000
+  Te       6.722900000000      8.386100000000      9.226500000000
+  Te       1.247000000000      4.660000000000      2.609100000000
+  Te       5.628500000000      6.170200000000      2.845000000000
+  Te       4.742900000000      9.191800000000      0.212000000000
+  Te       5.134400000000      0.984830000000     12.244000000000
+  Te       8.033800000000     10.061100000000      3.578600000000
+  Te       9.840000000000      4.825000000000      9.743000000000
+  Te       6.760000000000      2.189000000000      4.410700000000
+  Te       2.334000000000      2.201000000000      6.079000000000
+  Te       9.930600000000      3.982900000000      1.562000000000
+  Te       0.806810000000      8.091100000000     12.264000000000
diff --git a/regtest/crystallization/rt-nbonds-q6-lowmem/Makefile b/regtest/crystallization/rt-nbonds-q6-lowmem/Makefile
new file mode 100644
index 000000000..3703b27ce
--- /dev/null
+++ b/regtest/crystallization/rt-nbonds-q6-lowmem/Makefile
@@ -0,0 +1 @@
+include ../../scripts/test.make
diff --git a/regtest/crystallization/rt-nbonds-q6-lowmem/colv1.reference b/regtest/crystallization/rt-nbonds-q6-lowmem/colv1.reference
new file mode 100644
index 000000000..f7e414b39
--- /dev/null
+++ b/regtest/crystallization/rt-nbonds-q6-lowmem/colv1.reference
@@ -0,0 +1,2 @@
+#! FIELDS time w6
+ 0.000000 15.644050
diff --git a/regtest/crystallization/rt-nbonds-q6-lowmem/colv2.reference b/regtest/crystallization/rt-nbonds-q6-lowmem/colv2.reference
new file mode 100644
index 000000000..451673022
--- /dev/null
+++ b/regtest/crystallization/rt-nbonds-q6-lowmem/colv2.reference
@@ -0,0 +1,2 @@
+#! FIELDS time w4
+ 0.000000 33.811763
diff --git a/regtest/crystallization/rt-nbonds-q6-lowmem/config b/regtest/crystallization/rt-nbonds-q6-lowmem/config
new file mode 100644
index 000000000..e07432072
--- /dev/null
+++ b/regtest/crystallization/rt-nbonds-q6-lowmem/config
@@ -0,0 +1,3 @@
+type=driver
+# this is to test a different name
+arg="--plumed plumed.dat --ixyz 64.xyz"
diff --git a/regtest/crystallization/rt-nbonds-q6-lowmem/deriv1.reference b/regtest/crystallization/rt-nbonds-q6-lowmem/deriv1.reference
new file mode 100644
index 000000000..4ae8c2f9a
--- /dev/null
+++ b/regtest/crystallization/rt-nbonds-q6-lowmem/deriv1.reference
@@ -0,0 +1,202 @@
+#! FIELDS time parameter w6
+ 0.000000 0   0.7514
+ 0.000000 1   0.8829
+ 0.000000 2   2.4315
+ 0.000000 3  -3.5375
+ 0.000000 4   0.4772
+ 0.000000 5  -7.9712
+ 0.000000 6   2.0752
+ 0.000000 7   1.1725
+ 0.000000 8  -8.6674
+ 0.000000 9  -1.9002
+ 0.000000 10   0.5045
+ 0.000000 11   2.9522
+ 0.000000 12  -0.0081
+ 0.000000 13   0.0463
+ 0.000000 14   0.0087
+ 0.000000 15  -0.2558
+ 0.000000 16  -3.3394
+ 0.000000 17  -0.2597
+ 0.000000 18  -3.1012
+ 0.000000 19  -0.1783
+ 0.000000 20   0.0649
+ 0.000000 21  -0.7516
+ 0.000000 22  -0.5258
+ 0.000000 23  -0.8601
+ 0.000000 24   3.2547
+ 0.000000 25  -1.6845
+ 0.000000 26  -2.5631
+ 0.000000 27   0.8457
+ 0.000000 28  -3.3966
+ 0.000000 29   0.5749
+ 0.000000 30  -1.3306
+ 0.000000 31   5.7719
+ 0.000000 32   1.3995
+ 0.000000 33   1.2680
+ 0.000000 34  -0.2292
+ 0.000000 35   3.0950
+ 0.000000 36   0.0658
+ 0.000000 37  -0.1235
+ 0.000000 38  -2.4627
+ 0.000000 39   0.7487
+ 0.000000 40   1.8047
+ 0.000000 41   2.7807
+ 0.000000 42  -0.8925
+ 0.000000 43   2.1895
+ 0.000000 44   0.6505
+ 0.000000 45   5.0409
+ 0.000000 46   0.9839
+ 0.000000 47   1.7225
+ 0.000000 48  -1.6594
+ 0.000000 49  -0.4666
+ 0.000000 50  -1.9308
+ 0.000000 51  -1.1826
+ 0.000000 52   1.9000
+ 0.000000 53  -2.8092
+ 0.000000 54  -0.3462
+ 0.000000 55   3.0319
+ 0.000000 56   3.5796
+ 0.000000 57  -0.2071
+ 0.000000 58  -1.4985
+ 0.000000 59  -2.6203
+ 0.000000 60  -0.4259
+ 0.000000 61  -4.6751
+ 0.000000 62  -1.0700
+ 0.000000 63  -3.6946
+ 0.000000 64   4.2730
+ 0.000000 65   3.1233
+ 0.000000 66  -0.0293
+ 0.000000 67   1.2701
+ 0.000000 68  -3.1647
+ 0.000000 69   1.8323
+ 0.000000 70  -2.1267
+ 0.000000 71  -0.8128
+ 0.000000 72   2.0135
+ 0.000000 73   4.0780
+ 0.000000 74   4.1323
+ 0.000000 75  -1.8653
+ 0.000000 76  -3.2481
+ 0.000000 77  -0.3972
+ 0.000000 78   2.6436
+ 0.000000 79  -4.5409
+ 0.000000 80  -0.4981
+ 0.000000 81  -1.4292
+ 0.000000 82  -1.3215
+ 0.000000 83   0.3626
+ 0.000000 84   1.6686
+ 0.000000 85   0.4591
+ 0.000000 86  -0.4051
+ 0.000000 87  -0.2418
+ 0.000000 88  -3.1329
+ 0.000000 89   8.6219
+ 0.000000 90   0.6028
+ 0.000000 91   1.6546
+ 0.000000 92   2.4560
+ 0.000000 93   3.0714
+ 0.000000 94   1.1745
+ 0.000000 95  -4.8228
+ 0.000000 96   2.9876
+ 0.000000 97   2.7857
+ 0.000000 98  -0.5444
+ 0.000000 99   0.2690
+ 0.000000 100   1.0255
+ 0.000000 101  -1.3537
+ 0.000000 102  -1.9146
+ 0.000000 103  -2.3371
+ 0.000000 104  -0.6904
+ 0.000000 105   6.5071
+ 0.000000 106   0.0346
+ 0.000000 107   3.0002
+ 0.000000 108   0.2787
+ 0.000000 109   5.2995
+ 0.000000 110  -0.4218
+ 0.000000 111   0.5027
+ 0.000000 112   0.8729
+ 0.000000 113  -1.3573
+ 0.000000 114   3.9230
+ 0.000000 115  -1.8850
+ 0.000000 116  -5.0122
+ 0.000000 117   3.8191
+ 0.000000 118   0.4467
+ 0.000000 119   5.0885
+ 0.000000 120  -2.2489
+ 0.000000 121  -2.3297
+ 0.000000 122   1.1179
+ 0.000000 123   1.4748
+ 0.000000 124  -2.1647
+ 0.000000 125  -5.6072
+ 0.000000 126  -1.3841
+ 0.000000 127  -1.6793
+ 0.000000 128   0.6054
+ 0.000000 129   0.0390
+ 0.000000 130  -5.9543
+ 0.000000 131  -1.5910
+ 0.000000 132  -1.6559
+ 0.000000 133   0.2025
+ 0.000000 134  -3.6084
+ 0.000000 135   2.8223
+ 0.000000 136  -0.9791
+ 0.000000 137   3.9020
+ 0.000000 138   4.3932
+ 0.000000 139  -0.1796
+ 0.000000 140  -0.5022
+ 0.000000 141  -0.9469
+ 0.000000 142   1.1155
+ 0.000000 143   5.3109
+ 0.000000 144   1.3264
+ 0.000000 145   0.5365
+ 0.000000 146   0.5109
+ 0.000000 147  -3.5125
+ 0.000000 148   0.3803
+ 0.000000 149  -1.2272
+ 0.000000 150  -2.2695
+ 0.000000 151   3.1281
+ 0.000000 152   4.3139
+ 0.000000 153  -2.2924
+ 0.000000 154   0.0233
+ 0.000000 155  -3.1646
+ 0.000000 156   2.7875
+ 0.000000 157  -0.7124
+ 0.000000 158  -5.9856
+ 0.000000 159  -3.0120
+ 0.000000 160  -2.8344
+ 0.000000 161  -1.8310
+ 0.000000 162  -3.4288
+ 0.000000 163  -3.9051
+ 0.000000 164   5.2396
+ 0.000000 165   2.7985
+ 0.000000 166  -1.7127
+ 0.000000 167   5.7990
+ 0.000000 168   2.6108
+ 0.000000 169   3.8428
+ 0.000000 170   3.0649
+ 0.000000 171  -0.4821
+ 0.000000 172   5.3284
+ 0.000000 173   0.2070
+ 0.000000 174  -0.2515
+ 0.000000 175  -4.1468
+ 0.000000 176   6.4385
+ 0.000000 177  -4.7109
+ 0.000000 178   1.1203
+ 0.000000 179   0.4099
+ 0.000000 180  -0.3328
+ 0.000000 181   0.4363
+ 0.000000 182  -8.0394
+ 0.000000 183  -1.0587
+ 0.000000 184  -4.6100
+ 0.000000 185   1.0052
+ 0.000000 186  -3.3639
+ 0.000000 187  -0.1659
+ 0.000000 188   0.2976
+ 0.000000 189  -6.6979
+ 0.000000 190   7.8299
+ 0.000000 191  -2.0159
+ 0.000000 192  41.4373
+ 0.000000 193 -31.4183
+ 0.000000 194 -11.1354
+ 0.000000 195 -31.4183
+ 0.000000 196 -29.9501
+ 0.000000 197  42.7567
+ 0.000000 198 -11.1354
+ 0.000000 199  42.7567
+ 0.000000 200   0.8950
diff --git a/regtest/crystallization/rt-nbonds-q6-lowmem/deriv2.reference b/regtest/crystallization/rt-nbonds-q6-lowmem/deriv2.reference
new file mode 100644
index 000000000..bf0d41c9a
--- /dev/null
+++ b/regtest/crystallization/rt-nbonds-q6-lowmem/deriv2.reference
@@ -0,0 +1,202 @@
+#! FIELDS time parameter w4
+ 0.000000 0  -0.2546
+ 0.000000 1   1.7915
+ 0.000000 2   1.4219
+ 0.000000 3  -3.4107
+ 0.000000 4  -3.2102
+ 0.000000 5  -3.8684
+ 0.000000 6   0.5841
+ 0.000000 7   0.5244
+ 0.000000 8  -0.5506
+ 0.000000 9   1.6802
+ 0.000000 10  -2.4090
+ 0.000000 11   4.3098
+ 0.000000 12   0.5170
+ 0.000000 13   3.1692
+ 0.000000 14  -0.7917
+ 0.000000 15   8.7314
+ 0.000000 16   3.2534
+ 0.000000 17   4.5937
+ 0.000000 18   0.1529
+ 0.000000 19  -1.3610
+ 0.000000 20   0.6062
+ 0.000000 21   2.1473
+ 0.000000 22   1.1462
+ 0.000000 23   1.7843
+ 0.000000 24  -2.5136
+ 0.000000 25   2.2836
+ 0.000000 26  -3.1486
+ 0.000000 27  -3.4742
+ 0.000000 28  -0.1403
+ 0.000000 29   0.3266
+ 0.000000 30   6.6218
+ 0.000000 31  -0.2614
+ 0.000000 32  -2.2848
+ 0.000000 33   0.9558
+ 0.000000 34  -3.4443
+ 0.000000 35  -1.7551
+ 0.000000 36  -5.0356
+ 0.000000 37   2.2322
+ 0.000000 38  -5.9115
+ 0.000000 39  -0.3786
+ 0.000000 40  -7.1256
+ 0.000000 41   0.3157
+ 0.000000 42   2.2955
+ 0.000000 43  -1.3930
+ 0.000000 44   0.4939
+ 0.000000 45   1.7099
+ 0.000000 46  -0.1880
+ 0.000000 47   2.4970
+ 0.000000 48  -5.8590
+ 0.000000 49  -4.2949
+ 0.000000 50  -1.0078
+ 0.000000 51  -4.0462
+ 0.000000 52   2.7627
+ 0.000000 53   0.5621
+ 0.000000 54  -0.4197
+ 0.000000 55   0.7168
+ 0.000000 56   1.4767
+ 0.000000 57   0.0492
+ 0.000000 58  -1.3670
+ 0.000000 59   6.6129
+ 0.000000 60  -3.1318
+ 0.000000 61   1.9615
+ 0.000000 62   4.0257
+ 0.000000 63   3.3679
+ 0.000000 64   5.1249
+ 0.000000 65   1.0571
+ 0.000000 66  -2.6718
+ 0.000000 67   1.9511
+ 0.000000 68  -3.0899
+ 0.000000 69   3.3844
+ 0.000000 70   3.5373
+ 0.000000 71  -2.5662
+ 0.000000 72   1.3854
+ 0.000000 73  -0.8866
+ 0.000000 74   3.2630
+ 0.000000 75  -5.8850
+ 0.000000 76  -7.2364
+ 0.000000 77  -2.0470
+ 0.000000 78   1.2118
+ 0.000000 79   2.7032
+ 0.000000 80  -2.0353
+ 0.000000 81  -0.2827
+ 0.000000 82  -1.6227
+ 0.000000 83   0.6232
+ 0.000000 84   1.2917
+ 0.000000 85   3.0123
+ 0.000000 86   7.6244
+ 0.000000 87  -1.9792
+ 0.000000 88   0.8384
+ 0.000000 89   6.2483
+ 0.000000 90  -1.2618
+ 0.000000 91   1.6919
+ 0.000000 92   4.9239
+ 0.000000 93  -0.0553
+ 0.000000 94   6.5349
+ 0.000000 95  -6.0543
+ 0.000000 96  -1.0205
+ 0.000000 97   0.3694
+ 0.000000 98  -7.0517
+ 0.000000 99  -0.9435
+ 0.000000 100  -1.6073
+ 0.000000 101   9.8342
+ 0.000000 102  -4.7203
+ 0.000000 103   2.7525
+ 0.000000 104  -7.9241
+ 0.000000 105   5.5616
+ 0.000000 106   1.2297
+ 0.000000 107   3.8689
+ 0.000000 108  -2.2532
+ 0.000000 109  -0.5728
+ 0.000000 110  -2.1037
+ 0.000000 111  -0.3446
+ 0.000000 112  -1.8839
+ 0.000000 113   1.1764
+ 0.000000 114  -0.9034
+ 0.000000 115  -2.5301
+ 0.000000 116  -3.4934
+ 0.000000 117   3.9375
+ 0.000000 118   0.0475
+ 0.000000 119   1.0507
+ 0.000000 120  -4.9949
+ 0.000000 121  -2.8268
+ 0.000000 122   0.4098
+ 0.000000 123   1.7328
+ 0.000000 124  -3.0211
+ 0.000000 125  -0.2859
+ 0.000000 126   1.8651
+ 0.000000 127   2.0405
+ 0.000000 128  -2.1358
+ 0.000000 129  -2.7030
+ 0.000000 130   2.5471
+ 0.000000 131  -0.2810
+ 0.000000 132   1.5934
+ 0.000000 133  -3.1017
+ 0.000000 134  -1.6080
+ 0.000000 135   0.7564
+ 0.000000 136   3.7250
+ 0.000000 137   0.8031
+ 0.000000 138   0.7069
+ 0.000000 139  -0.2153
+ 0.000000 140  -1.0334
+ 0.000000 141   1.1444
+ 0.000000 142   1.5002
+ 0.000000 143   1.0250
+ 0.000000 144  -0.4688
+ 0.000000 145  -2.3582
+ 0.000000 146   6.2597
+ 0.000000 147   3.1187
+ 0.000000 148  -2.1759
+ 0.000000 149   2.7629
+ 0.000000 150  -2.4924
+ 0.000000 151  -3.7095
+ 0.000000 152  -1.7532
+ 0.000000 153  -4.1347
+ 0.000000 154  -1.7478
+ 0.000000 155  -2.9066
+ 0.000000 156   1.3769
+ 0.000000 157  -1.3631
+ 0.000000 158  -7.2793
+ 0.000000 159  -1.2756
+ 0.000000 160  -0.2989
+ 0.000000 161   0.2878
+ 0.000000 162   1.8778
+ 0.000000 163  -3.2438
+ 0.000000 164  -5.5374
+ 0.000000 165  -3.6191
+ 0.000000 166   6.7136
+ 0.000000 167   2.8478
+ 0.000000 168   5.8495
+ 0.000000 169  -3.5060
+ 0.000000 170   2.3624
+ 0.000000 171   2.2127
+ 0.000000 172   1.3909
+ 0.000000 173  -0.8028
+ 0.000000 174  -3.6181
+ 0.000000 175  -4.5232
+ 0.000000 176  -1.1553
+ 0.000000 177   1.1278
+ 0.000000 178   0.8887
+ 0.000000 179   5.3118
+ 0.000000 180   0.6350
+ 0.000000 181  -0.7556
+ 0.000000 182  -3.5560
+ 0.000000 183   0.0509
+ 0.000000 184   1.2030
+ 0.000000 185   0.0213
+ 0.000000 186   3.0273
+ 0.000000 187   2.3146
+ 0.000000 188  -3.1933
+ 0.000000 189   1.4907
+ 0.000000 190   2.4234
+ 0.000000 191  -3.5761
+ 0.000000 192 -43.8368
+ 0.000000 193  28.3463
+ 0.000000 194 -28.0159
+ 0.000000 195  28.3463
+ 0.000000 196 -48.0443
+ 0.000000 197  -6.5965
+ 0.000000 198 -28.0159
+ 0.000000 199  -6.5965
+ 0.000000 200 -183.6319
diff --git a/regtest/crystallization/rt-nbonds-q6-lowmem/plumed.dat b/regtest/crystallization/rt-nbonds-q6-lowmem/plumed.dat
new file mode 100644
index 000000000..eef159413
--- /dev/null
+++ b/regtest/crystallization/rt-nbonds-q6-lowmem/plumed.dat
@@ -0,0 +1,15 @@
+Q6 SPECIES=1-64 D_0=3.0 R_0=1.5 MEAN LABEL=q6 
+# Q6 SPECIES=1-64 D_0=3.0 R_0=1.5 MEAN NUMERICAL_DERIVATIVES LABEL=q6n
+
+NLINKS ARG=q6 SWITCH={RATIONAL D_0=3.0 R_0=1.5} LOWMEM LABEL=w6
+# NLINKS ARG=q6n SWITCH={RATIONAL D_0=3.0 R_0=1.5} NUMERICAL_DERIVATIVES LABEL=w6n
+PRINT ARG=w6 FILE=colv1
+DUMPDERIVATIVES ARG=w6 FILE=deriv1 FMT=%8.4f
+
+Q4 SPECIES=1-64 D_0=3.0 R_0=1.5 MEAN LABEL=q4
+# Q4 SPECIES=1-64 D_0=3.0 R_0=1.5 MEAN NUMERICAL_DERIVATIVES LABEL=q4n
+
+NLINKS ARG=q4 SWITCH={RATIONAL D_0=3.0 R_0=1.5} LOWMEM LABEL=w4
+# NLINKS ARG=q4n SWITCH={RATIONAL D_0=3.0 R_0=1.5} NUMERICAL_DERIVATIVES LABEL=w4n
+PRINT ARG=w4 FILE=colv2
+DUMPDERIVATIVES ARG=w4 FILE=deriv2 FMT=%8.4f
diff --git a/regtest/crystallization/rt-nbonds-q6/64.xyz b/regtest/crystallization/rt-nbonds-q6/64.xyz
new file mode 100755
index 000000000..90b3ae19c
--- /dev/null
+++ b/regtest/crystallization/rt-nbonds-q6/64.xyz
@@ -0,0 +1,66 @@
+   64
+12.41642 12.41642 12.41642 
+  Ge       1.473000000000      2.211000000000      8.700200000000
+  Ge       4.886500000000      3.830000000000      6.593500000000
+  Ge       3.807000000000      1.978700000000     10.045000000000
+  Ge       5.002000000000      3.883500000000      1.357000000000
+  Ge       9.636000000000      1.604000000000      8.697700000000
+  Ge       6.559800000000     11.084000000000      9.650400000000
+  Ge       0.627000000000      0.390000000000      2.224300000000
+  Ge       3.341900000000      6.765300000000      1.369500000000
+  Ge       5.032000000000      9.650500000000      2.785000000000
+  Ge       1.682700000000     10.392700000000      5.459500000000
+  Ge       3.517300000000     12.039000000000      5.930600000000
+  Ge       1.072000000000      5.374900000000     12.335000000000
+  Ge       0.863390000000     11.308000000000      0.275000000000
+  Ge       5.867800000000      0.672000000000      6.605200000000
+  Ge       3.961000000000      8.414000000000      8.691600000000
+  Ge      11.570960000000     10.444000000000      2.125000000000
+  Ge       1.736000000000      6.845200000000      6.129000000000
+  Ge       7.557300000000      8.842800000000      6.611800000000
+  Ge       2.785800000000      2.591200000000      1.833300000000
+  Ge      11.564000000000     11.555000000000     10.928000000000
+  Ge       3.324000000000     11.334000000000     12.095000000000
+  Ge      10.532000000000      9.377700000000      6.724000000000
+  Ge       7.157000000000     11.468000000000     12.063000000000
+  Ge       0.027000000000      4.622000000000      5.996200000000
+  Ge       4.564000000000      6.513200000000      5.370200000000
+  Ge      12.189770000000      7.981000000000      2.257000000000
+  Ge       8.973100000000      0.437000000000      4.852800000000
+  Ge       9.086200000000      9.857000000000      0.975000000000
+  Ge       6.516500000000     12.170000000000      2.438600000000
+  Ge       8.955900000000      4.612000000000      4.478000000000
+  Ge       7.419000000000      3.301600000000      0.450000000000
+  Ge      10.808000000000      7.170600000000     11.109000000000
+  Te       4.818200000000      9.096200000000      6.189300000000
+  Te      10.663400000000      6.726900000000      5.343000000000
+  Te       7.021700000000      4.814600000000     10.649000000000
+  Te       3.253500000000      5.713300000000      8.267800000000
+  Te      10.322000000000      1.250000000000      2.209500000000
+  Te       0.300000000000      5.033000000000      8.902400000000
+  Te      12.092000000000      0.227000000000      8.527200000000
+  Te       6.329000000000      2.634100000000      8.525500000000
+  Te       8.044800000000     11.712000000000      7.575400000000
+  Te       2.150000000000      8.302000000000      3.591400000000
+  Te      11.581000000000     11.201000000000      4.824700000000
+  Te       3.960900000000      4.755000000000     11.528710000000
+  Te       3.815300000000     12.139000000000      3.263700000000
+  Te       9.419700000000      7.232700000000      1.010000000000
+  Te       1.211700000000      1.726300000000     12.223470000000
+  Te       0.798460000000      8.988100000000      7.517700000000
+  Te      10.078000000000      9.503000000000      9.977500000000
+  Te       9.336700000000      0.894000000000     11.469560000000
+  Te       7.251000000000      5.783400000000      6.399000000000
+  Te       3.740000000000     11.515000000000      9.383700000000
+  Te      10.329000000000      2.726600000000      5.835100000000
+  Te       6.722900000000      8.386100000000      9.226500000000
+  Te       1.247000000000      4.660000000000      2.609100000000
+  Te       5.628500000000      6.170200000000      2.845000000000
+  Te       4.742900000000      9.191800000000      0.212000000000
+  Te       5.134400000000      0.984830000000     12.244000000000
+  Te       8.033800000000     10.061100000000      3.578600000000
+  Te       9.840000000000      4.825000000000      9.743000000000
+  Te       6.760000000000      2.189000000000      4.410700000000
+  Te       2.334000000000      2.201000000000      6.079000000000
+  Te       9.930600000000      3.982900000000      1.562000000000
+  Te       0.806810000000      8.091100000000     12.264000000000
diff --git a/regtest/crystallization/rt-nbonds-q6/Makefile b/regtest/crystallization/rt-nbonds-q6/Makefile
new file mode 100644
index 000000000..3703b27ce
--- /dev/null
+++ b/regtest/crystallization/rt-nbonds-q6/Makefile
@@ -0,0 +1 @@
+include ../../scripts/test.make
diff --git a/regtest/crystallization/rt-nbonds-q6/colv1.reference b/regtest/crystallization/rt-nbonds-q6/colv1.reference
new file mode 100644
index 000000000..f7e414b39
--- /dev/null
+++ b/regtest/crystallization/rt-nbonds-q6/colv1.reference
@@ -0,0 +1,2 @@
+#! FIELDS time w6
+ 0.000000 15.644050
diff --git a/regtest/crystallization/rt-nbonds-q6/colv2.reference b/regtest/crystallization/rt-nbonds-q6/colv2.reference
new file mode 100644
index 000000000..451673022
--- /dev/null
+++ b/regtest/crystallization/rt-nbonds-q6/colv2.reference
@@ -0,0 +1,2 @@
+#! FIELDS time w4
+ 0.000000 33.811763
diff --git a/regtest/crystallization/rt-nbonds-q6/config b/regtest/crystallization/rt-nbonds-q6/config
new file mode 100644
index 000000000..e07432072
--- /dev/null
+++ b/regtest/crystallization/rt-nbonds-q6/config
@@ -0,0 +1,3 @@
+type=driver
+# this is to test a different name
+arg="--plumed plumed.dat --ixyz 64.xyz"
diff --git a/regtest/crystallization/rt-nbonds-q6/deriv1.reference b/regtest/crystallization/rt-nbonds-q6/deriv1.reference
new file mode 100644
index 000000000..4ae8c2f9a
--- /dev/null
+++ b/regtest/crystallization/rt-nbonds-q6/deriv1.reference
@@ -0,0 +1,202 @@
+#! FIELDS time parameter w6
+ 0.000000 0   0.7514
+ 0.000000 1   0.8829
+ 0.000000 2   2.4315
+ 0.000000 3  -3.5375
+ 0.000000 4   0.4772
+ 0.000000 5  -7.9712
+ 0.000000 6   2.0752
+ 0.000000 7   1.1725
+ 0.000000 8  -8.6674
+ 0.000000 9  -1.9002
+ 0.000000 10   0.5045
+ 0.000000 11   2.9522
+ 0.000000 12  -0.0081
+ 0.000000 13   0.0463
+ 0.000000 14   0.0087
+ 0.000000 15  -0.2558
+ 0.000000 16  -3.3394
+ 0.000000 17  -0.2597
+ 0.000000 18  -3.1012
+ 0.000000 19  -0.1783
+ 0.000000 20   0.0649
+ 0.000000 21  -0.7516
+ 0.000000 22  -0.5258
+ 0.000000 23  -0.8601
+ 0.000000 24   3.2547
+ 0.000000 25  -1.6845
+ 0.000000 26  -2.5631
+ 0.000000 27   0.8457
+ 0.000000 28  -3.3966
+ 0.000000 29   0.5749
+ 0.000000 30  -1.3306
+ 0.000000 31   5.7719
+ 0.000000 32   1.3995
+ 0.000000 33   1.2680
+ 0.000000 34  -0.2292
+ 0.000000 35   3.0950
+ 0.000000 36   0.0658
+ 0.000000 37  -0.1235
+ 0.000000 38  -2.4627
+ 0.000000 39   0.7487
+ 0.000000 40   1.8047
+ 0.000000 41   2.7807
+ 0.000000 42  -0.8925
+ 0.000000 43   2.1895
+ 0.000000 44   0.6505
+ 0.000000 45   5.0409
+ 0.000000 46   0.9839
+ 0.000000 47   1.7225
+ 0.000000 48  -1.6594
+ 0.000000 49  -0.4666
+ 0.000000 50  -1.9308
+ 0.000000 51  -1.1826
+ 0.000000 52   1.9000
+ 0.000000 53  -2.8092
+ 0.000000 54  -0.3462
+ 0.000000 55   3.0319
+ 0.000000 56   3.5796
+ 0.000000 57  -0.2071
+ 0.000000 58  -1.4985
+ 0.000000 59  -2.6203
+ 0.000000 60  -0.4259
+ 0.000000 61  -4.6751
+ 0.000000 62  -1.0700
+ 0.000000 63  -3.6946
+ 0.000000 64   4.2730
+ 0.000000 65   3.1233
+ 0.000000 66  -0.0293
+ 0.000000 67   1.2701
+ 0.000000 68  -3.1647
+ 0.000000 69   1.8323
+ 0.000000 70  -2.1267
+ 0.000000 71  -0.8128
+ 0.000000 72   2.0135
+ 0.000000 73   4.0780
+ 0.000000 74   4.1323
+ 0.000000 75  -1.8653
+ 0.000000 76  -3.2481
+ 0.000000 77  -0.3972
+ 0.000000 78   2.6436
+ 0.000000 79  -4.5409
+ 0.000000 80  -0.4981
+ 0.000000 81  -1.4292
+ 0.000000 82  -1.3215
+ 0.000000 83   0.3626
+ 0.000000 84   1.6686
+ 0.000000 85   0.4591
+ 0.000000 86  -0.4051
+ 0.000000 87  -0.2418
+ 0.000000 88  -3.1329
+ 0.000000 89   8.6219
+ 0.000000 90   0.6028
+ 0.000000 91   1.6546
+ 0.000000 92   2.4560
+ 0.000000 93   3.0714
+ 0.000000 94   1.1745
+ 0.000000 95  -4.8228
+ 0.000000 96   2.9876
+ 0.000000 97   2.7857
+ 0.000000 98  -0.5444
+ 0.000000 99   0.2690
+ 0.000000 100   1.0255
+ 0.000000 101  -1.3537
+ 0.000000 102  -1.9146
+ 0.000000 103  -2.3371
+ 0.000000 104  -0.6904
+ 0.000000 105   6.5071
+ 0.000000 106   0.0346
+ 0.000000 107   3.0002
+ 0.000000 108   0.2787
+ 0.000000 109   5.2995
+ 0.000000 110  -0.4218
+ 0.000000 111   0.5027
+ 0.000000 112   0.8729
+ 0.000000 113  -1.3573
+ 0.000000 114   3.9230
+ 0.000000 115  -1.8850
+ 0.000000 116  -5.0122
+ 0.000000 117   3.8191
+ 0.000000 118   0.4467
+ 0.000000 119   5.0885
+ 0.000000 120  -2.2489
+ 0.000000 121  -2.3297
+ 0.000000 122   1.1179
+ 0.000000 123   1.4748
+ 0.000000 124  -2.1647
+ 0.000000 125  -5.6072
+ 0.000000 126  -1.3841
+ 0.000000 127  -1.6793
+ 0.000000 128   0.6054
+ 0.000000 129   0.0390
+ 0.000000 130  -5.9543
+ 0.000000 131  -1.5910
+ 0.000000 132  -1.6559
+ 0.000000 133   0.2025
+ 0.000000 134  -3.6084
+ 0.000000 135   2.8223
+ 0.000000 136  -0.9791
+ 0.000000 137   3.9020
+ 0.000000 138   4.3932
+ 0.000000 139  -0.1796
+ 0.000000 140  -0.5022
+ 0.000000 141  -0.9469
+ 0.000000 142   1.1155
+ 0.000000 143   5.3109
+ 0.000000 144   1.3264
+ 0.000000 145   0.5365
+ 0.000000 146   0.5109
+ 0.000000 147  -3.5125
+ 0.000000 148   0.3803
+ 0.000000 149  -1.2272
+ 0.000000 150  -2.2695
+ 0.000000 151   3.1281
+ 0.000000 152   4.3139
+ 0.000000 153  -2.2924
+ 0.000000 154   0.0233
+ 0.000000 155  -3.1646
+ 0.000000 156   2.7875
+ 0.000000 157  -0.7124
+ 0.000000 158  -5.9856
+ 0.000000 159  -3.0120
+ 0.000000 160  -2.8344
+ 0.000000 161  -1.8310
+ 0.000000 162  -3.4288
+ 0.000000 163  -3.9051
+ 0.000000 164   5.2396
+ 0.000000 165   2.7985
+ 0.000000 166  -1.7127
+ 0.000000 167   5.7990
+ 0.000000 168   2.6108
+ 0.000000 169   3.8428
+ 0.000000 170   3.0649
+ 0.000000 171  -0.4821
+ 0.000000 172   5.3284
+ 0.000000 173   0.2070
+ 0.000000 174  -0.2515
+ 0.000000 175  -4.1468
+ 0.000000 176   6.4385
+ 0.000000 177  -4.7109
+ 0.000000 178   1.1203
+ 0.000000 179   0.4099
+ 0.000000 180  -0.3328
+ 0.000000 181   0.4363
+ 0.000000 182  -8.0394
+ 0.000000 183  -1.0587
+ 0.000000 184  -4.6100
+ 0.000000 185   1.0052
+ 0.000000 186  -3.3639
+ 0.000000 187  -0.1659
+ 0.000000 188   0.2976
+ 0.000000 189  -6.6979
+ 0.000000 190   7.8299
+ 0.000000 191  -2.0159
+ 0.000000 192  41.4373
+ 0.000000 193 -31.4183
+ 0.000000 194 -11.1354
+ 0.000000 195 -31.4183
+ 0.000000 196 -29.9501
+ 0.000000 197  42.7567
+ 0.000000 198 -11.1354
+ 0.000000 199  42.7567
+ 0.000000 200   0.8950
diff --git a/regtest/crystallization/rt-nbonds-q6/deriv2.reference b/regtest/crystallization/rt-nbonds-q6/deriv2.reference
new file mode 100644
index 000000000..bf0d41c9a
--- /dev/null
+++ b/regtest/crystallization/rt-nbonds-q6/deriv2.reference
@@ -0,0 +1,202 @@
+#! FIELDS time parameter w4
+ 0.000000 0  -0.2546
+ 0.000000 1   1.7915
+ 0.000000 2   1.4219
+ 0.000000 3  -3.4107
+ 0.000000 4  -3.2102
+ 0.000000 5  -3.8684
+ 0.000000 6   0.5841
+ 0.000000 7   0.5244
+ 0.000000 8  -0.5506
+ 0.000000 9   1.6802
+ 0.000000 10  -2.4090
+ 0.000000 11   4.3098
+ 0.000000 12   0.5170
+ 0.000000 13   3.1692
+ 0.000000 14  -0.7917
+ 0.000000 15   8.7314
+ 0.000000 16   3.2534
+ 0.000000 17   4.5937
+ 0.000000 18   0.1529
+ 0.000000 19  -1.3610
+ 0.000000 20   0.6062
+ 0.000000 21   2.1473
+ 0.000000 22   1.1462
+ 0.000000 23   1.7843
+ 0.000000 24  -2.5136
+ 0.000000 25   2.2836
+ 0.000000 26  -3.1486
+ 0.000000 27  -3.4742
+ 0.000000 28  -0.1403
+ 0.000000 29   0.3266
+ 0.000000 30   6.6218
+ 0.000000 31  -0.2614
+ 0.000000 32  -2.2848
+ 0.000000 33   0.9558
+ 0.000000 34  -3.4443
+ 0.000000 35  -1.7551
+ 0.000000 36  -5.0356
+ 0.000000 37   2.2322
+ 0.000000 38  -5.9115
+ 0.000000 39  -0.3786
+ 0.000000 40  -7.1256
+ 0.000000 41   0.3157
+ 0.000000 42   2.2955
+ 0.000000 43  -1.3930
+ 0.000000 44   0.4939
+ 0.000000 45   1.7099
+ 0.000000 46  -0.1880
+ 0.000000 47   2.4970
+ 0.000000 48  -5.8590
+ 0.000000 49  -4.2949
+ 0.000000 50  -1.0078
+ 0.000000 51  -4.0462
+ 0.000000 52   2.7627
+ 0.000000 53   0.5621
+ 0.000000 54  -0.4197
+ 0.000000 55   0.7168
+ 0.000000 56   1.4767
+ 0.000000 57   0.0492
+ 0.000000 58  -1.3670
+ 0.000000 59   6.6129
+ 0.000000 60  -3.1318
+ 0.000000 61   1.9615
+ 0.000000 62   4.0257
+ 0.000000 63   3.3679
+ 0.000000 64   5.1249
+ 0.000000 65   1.0571
+ 0.000000 66  -2.6718
+ 0.000000 67   1.9511
+ 0.000000 68  -3.0899
+ 0.000000 69   3.3844
+ 0.000000 70   3.5373
+ 0.000000 71  -2.5662
+ 0.000000 72   1.3854
+ 0.000000 73  -0.8866
+ 0.000000 74   3.2630
+ 0.000000 75  -5.8850
+ 0.000000 76  -7.2364
+ 0.000000 77  -2.0470
+ 0.000000 78   1.2118
+ 0.000000 79   2.7032
+ 0.000000 80  -2.0353
+ 0.000000 81  -0.2827
+ 0.000000 82  -1.6227
+ 0.000000 83   0.6232
+ 0.000000 84   1.2917
+ 0.000000 85   3.0123
+ 0.000000 86   7.6244
+ 0.000000 87  -1.9792
+ 0.000000 88   0.8384
+ 0.000000 89   6.2483
+ 0.000000 90  -1.2618
+ 0.000000 91   1.6919
+ 0.000000 92   4.9239
+ 0.000000 93  -0.0553
+ 0.000000 94   6.5349
+ 0.000000 95  -6.0543
+ 0.000000 96  -1.0205
+ 0.000000 97   0.3694
+ 0.000000 98  -7.0517
+ 0.000000 99  -0.9435
+ 0.000000 100  -1.6073
+ 0.000000 101   9.8342
+ 0.000000 102  -4.7203
+ 0.000000 103   2.7525
+ 0.000000 104  -7.9241
+ 0.000000 105   5.5616
+ 0.000000 106   1.2297
+ 0.000000 107   3.8689
+ 0.000000 108  -2.2532
+ 0.000000 109  -0.5728
+ 0.000000 110  -2.1037
+ 0.000000 111  -0.3446
+ 0.000000 112  -1.8839
+ 0.000000 113   1.1764
+ 0.000000 114  -0.9034
+ 0.000000 115  -2.5301
+ 0.000000 116  -3.4934
+ 0.000000 117   3.9375
+ 0.000000 118   0.0475
+ 0.000000 119   1.0507
+ 0.000000 120  -4.9949
+ 0.000000 121  -2.8268
+ 0.000000 122   0.4098
+ 0.000000 123   1.7328
+ 0.000000 124  -3.0211
+ 0.000000 125  -0.2859
+ 0.000000 126   1.8651
+ 0.000000 127   2.0405
+ 0.000000 128  -2.1358
+ 0.000000 129  -2.7030
+ 0.000000 130   2.5471
+ 0.000000 131  -0.2810
+ 0.000000 132   1.5934
+ 0.000000 133  -3.1017
+ 0.000000 134  -1.6080
+ 0.000000 135   0.7564
+ 0.000000 136   3.7250
+ 0.000000 137   0.8031
+ 0.000000 138   0.7069
+ 0.000000 139  -0.2153
+ 0.000000 140  -1.0334
+ 0.000000 141   1.1444
+ 0.000000 142   1.5002
+ 0.000000 143   1.0250
+ 0.000000 144  -0.4688
+ 0.000000 145  -2.3582
+ 0.000000 146   6.2597
+ 0.000000 147   3.1187
+ 0.000000 148  -2.1759
+ 0.000000 149   2.7629
+ 0.000000 150  -2.4924
+ 0.000000 151  -3.7095
+ 0.000000 152  -1.7532
+ 0.000000 153  -4.1347
+ 0.000000 154  -1.7478
+ 0.000000 155  -2.9066
+ 0.000000 156   1.3769
+ 0.000000 157  -1.3631
+ 0.000000 158  -7.2793
+ 0.000000 159  -1.2756
+ 0.000000 160  -0.2989
+ 0.000000 161   0.2878
+ 0.000000 162   1.8778
+ 0.000000 163  -3.2438
+ 0.000000 164  -5.5374
+ 0.000000 165  -3.6191
+ 0.000000 166   6.7136
+ 0.000000 167   2.8478
+ 0.000000 168   5.8495
+ 0.000000 169  -3.5060
+ 0.000000 170   2.3624
+ 0.000000 171   2.2127
+ 0.000000 172   1.3909
+ 0.000000 173  -0.8028
+ 0.000000 174  -3.6181
+ 0.000000 175  -4.5232
+ 0.000000 176  -1.1553
+ 0.000000 177   1.1278
+ 0.000000 178   0.8887
+ 0.000000 179   5.3118
+ 0.000000 180   0.6350
+ 0.000000 181  -0.7556
+ 0.000000 182  -3.5560
+ 0.000000 183   0.0509
+ 0.000000 184   1.2030
+ 0.000000 185   0.0213
+ 0.000000 186   3.0273
+ 0.000000 187   2.3146
+ 0.000000 188  -3.1933
+ 0.000000 189   1.4907
+ 0.000000 190   2.4234
+ 0.000000 191  -3.5761
+ 0.000000 192 -43.8368
+ 0.000000 193  28.3463
+ 0.000000 194 -28.0159
+ 0.000000 195  28.3463
+ 0.000000 196 -48.0443
+ 0.000000 197  -6.5965
+ 0.000000 198 -28.0159
+ 0.000000 199  -6.5965
+ 0.000000 200 -183.6319
diff --git a/regtest/crystallization/rt-nbonds-q6/plumed.dat b/regtest/crystallization/rt-nbonds-q6/plumed.dat
new file mode 100644
index 000000000..0d6d4a995
--- /dev/null
+++ b/regtest/crystallization/rt-nbonds-q6/plumed.dat
@@ -0,0 +1,15 @@
+Q6 SPECIES=1-64 D_0=3.0 R_0=1.5 MEAN LABEL=q6 
+# Q6 SPECIES=1-64 D_0=3.0 R_0=1.5 MEAN NUMERICAL_DERIVATIVES LABEL=q6n
+
+NLINKS ARG=q6 SWITCH={RATIONAL D_0=3.0 R_0=1.5} LABEL=w6
+# NLINKS ARG=q6 SWITCH={RATIONAL D_0=3.0 R_0=1.5} NUMERICAL_DERIVATIVES LABEL=w6n
+PRINT ARG=w6 FILE=colv1
+DUMPDERIVATIVES ARG=w6 FILE=deriv1 FMT=%8.4f
+
+Q4 SPECIES=1-64 D_0=3.0 R_0=1.5 MEAN LABEL=q4
+# Q4 SPECIES=1-64 D_0=3.0 R_0=1.5 MEAN NUMERICAL_DERIVATIVES LABEL=q4n
+
+NLINKS ARG=q4 SWITCH={RATIONAL D_0=3.0 R_0=1.5} LABEL=w4
+# NLINKS ARG=q4 SWITCH={RATIONAL D_0=3.0 R_0=1.5} NUMERICAL_DERIVATIVES LABEL=w4n
+PRINT ARG=w4 FILE=colv2
+DUMPDERIVATIVES ARG=w4 FILE=deriv2 FMT=%8.4f
diff --git a/regtest/crystallization/rt-q6-lowmem/64.xyz b/regtest/crystallization/rt-q6-lowmem/64.xyz
new file mode 100755
index 000000000..90b3ae19c
--- /dev/null
+++ b/regtest/crystallization/rt-q6-lowmem/64.xyz
@@ -0,0 +1,66 @@
+   64
+12.41642 12.41642 12.41642 
+  Ge       1.473000000000      2.211000000000      8.700200000000
+  Ge       4.886500000000      3.830000000000      6.593500000000
+  Ge       3.807000000000      1.978700000000     10.045000000000
+  Ge       5.002000000000      3.883500000000      1.357000000000
+  Ge       9.636000000000      1.604000000000      8.697700000000
+  Ge       6.559800000000     11.084000000000      9.650400000000
+  Ge       0.627000000000      0.390000000000      2.224300000000
+  Ge       3.341900000000      6.765300000000      1.369500000000
+  Ge       5.032000000000      9.650500000000      2.785000000000
+  Ge       1.682700000000     10.392700000000      5.459500000000
+  Ge       3.517300000000     12.039000000000      5.930600000000
+  Ge       1.072000000000      5.374900000000     12.335000000000
+  Ge       0.863390000000     11.308000000000      0.275000000000
+  Ge       5.867800000000      0.672000000000      6.605200000000
+  Ge       3.961000000000      8.414000000000      8.691600000000
+  Ge      11.570960000000     10.444000000000      2.125000000000
+  Ge       1.736000000000      6.845200000000      6.129000000000
+  Ge       7.557300000000      8.842800000000      6.611800000000
+  Ge       2.785800000000      2.591200000000      1.833300000000
+  Ge      11.564000000000     11.555000000000     10.928000000000
+  Ge       3.324000000000     11.334000000000     12.095000000000
+  Ge      10.532000000000      9.377700000000      6.724000000000
+  Ge       7.157000000000     11.468000000000     12.063000000000
+  Ge       0.027000000000      4.622000000000      5.996200000000
+  Ge       4.564000000000      6.513200000000      5.370200000000
+  Ge      12.189770000000      7.981000000000      2.257000000000
+  Ge       8.973100000000      0.437000000000      4.852800000000
+  Ge       9.086200000000      9.857000000000      0.975000000000
+  Ge       6.516500000000     12.170000000000      2.438600000000
+  Ge       8.955900000000      4.612000000000      4.478000000000
+  Ge       7.419000000000      3.301600000000      0.450000000000
+  Ge      10.808000000000      7.170600000000     11.109000000000
+  Te       4.818200000000      9.096200000000      6.189300000000
+  Te      10.663400000000      6.726900000000      5.343000000000
+  Te       7.021700000000      4.814600000000     10.649000000000
+  Te       3.253500000000      5.713300000000      8.267800000000
+  Te      10.322000000000      1.250000000000      2.209500000000
+  Te       0.300000000000      5.033000000000      8.902400000000
+  Te      12.092000000000      0.227000000000      8.527200000000
+  Te       6.329000000000      2.634100000000      8.525500000000
+  Te       8.044800000000     11.712000000000      7.575400000000
+  Te       2.150000000000      8.302000000000      3.591400000000
+  Te      11.581000000000     11.201000000000      4.824700000000
+  Te       3.960900000000      4.755000000000     11.528710000000
+  Te       3.815300000000     12.139000000000      3.263700000000
+  Te       9.419700000000      7.232700000000      1.010000000000
+  Te       1.211700000000      1.726300000000     12.223470000000
+  Te       0.798460000000      8.988100000000      7.517700000000
+  Te      10.078000000000      9.503000000000      9.977500000000
+  Te       9.336700000000      0.894000000000     11.469560000000
+  Te       7.251000000000      5.783400000000      6.399000000000
+  Te       3.740000000000     11.515000000000      9.383700000000
+  Te      10.329000000000      2.726600000000      5.835100000000
+  Te       6.722900000000      8.386100000000      9.226500000000
+  Te       1.247000000000      4.660000000000      2.609100000000
+  Te       5.628500000000      6.170200000000      2.845000000000
+  Te       4.742900000000      9.191800000000      0.212000000000
+  Te       5.134400000000      0.984830000000     12.244000000000
+  Te       8.033800000000     10.061100000000      3.578600000000
+  Te       9.840000000000      4.825000000000      9.743000000000
+  Te       6.760000000000      2.189000000000      4.410700000000
+  Te       2.334000000000      2.201000000000      6.079000000000
+  Te       9.930600000000      3.982900000000      1.562000000000
+  Te       0.806810000000      8.091100000000     12.264000000000
diff --git a/regtest/crystallization/rt-q6-lowmem/Makefile b/regtest/crystallization/rt-q6-lowmem/Makefile
new file mode 100644
index 000000000..3703b27ce
--- /dev/null
+++ b/regtest/crystallization/rt-q6-lowmem/Makefile
@@ -0,0 +1 @@
+include ../../scripts/test.make
diff --git a/regtest/crystallization/rt-q6-lowmem/colv.reference b/regtest/crystallization/rt-q6-lowmem/colv.reference
new file mode 100644
index 000000000..8d69c80ee
--- /dev/null
+++ b/regtest/crystallization/rt-q6-lowmem/colv.reference
@@ -0,0 +1,2 @@
+#! FIELDS time q6.mean
+ 0.000000 0.245096
diff --git a/regtest/crystallization/rt-q6-lowmem/colv3.reference b/regtest/crystallization/rt-q6-lowmem/colv3.reference
new file mode 100644
index 000000000..511ac4b22
--- /dev/null
+++ b/regtest/crystallization/rt-q6-lowmem/colv3.reference
@@ -0,0 +1,2 @@
+#! FIELDS time w6.mean
+ 0.000000 0.036242
diff --git a/regtest/crystallization/rt-q6-lowmem/config b/regtest/crystallization/rt-q6-lowmem/config
new file mode 100644
index 000000000..e07432072
--- /dev/null
+++ b/regtest/crystallization/rt-q6-lowmem/config
@@ -0,0 +1,3 @@
+type=driver
+# this is to test a different name
+arg="--plumed plumed.dat --ixyz 64.xyz"
diff --git a/regtest/crystallization/rt-q6-lowmem/deriv.reference b/regtest/crystallization/rt-q6-lowmem/deriv.reference
new file mode 100644
index 000000000..a7c522e73
--- /dev/null
+++ b/regtest/crystallization/rt-q6-lowmem/deriv.reference
@@ -0,0 +1,202 @@
+#! FIELDS time parameter q6.mean
+ 0.000000 0   0.0012
+ 0.000000 1   0.0016
+ 0.000000 2  -0.0017
+ 0.000000 3  -0.0003
+ 0.000000 4   0.0017
+ 0.000000 5  -0.0031
+ 0.000000 6  -0.0013
+ 0.000000 7  -0.0015
+ 0.000000 8  -0.0023
+ 0.000000 9   0.0000
+ 0.000000 10   0.0022
+ 0.000000 11   0.0030
+ 0.000000 12  -0.0009
+ 0.000000 13  -0.0010
+ 0.000000 14  -0.0002
+ 0.000000 15  -0.0018
+ 0.000000 16  -0.0026
+ 0.000000 17  -0.0006
+ 0.000000 18   0.0009
+ 0.000000 19  -0.0008
+ 0.000000 20   0.0013
+ 0.000000 21  -0.0024
+ 0.000000 22   0.0041
+ 0.000000 23  -0.0008
+ 0.000000 24   0.0026
+ 0.000000 25  -0.0023
+ 0.000000 26  -0.0015
+ 0.000000 27  -0.0021
+ 0.000000 28   0.0029
+ 0.000000 29   0.0037
+ 0.000000 30  -0.0017
+ 0.000000 31  -0.0015
+ 0.000000 32   0.0018
+ 0.000000 33  -0.0027
+ 0.000000 34  -0.0000
+ 0.000000 35   0.0003
+ 0.000000 36   0.0006
+ 0.000000 37  -0.0016
+ 0.000000 38   0.0004
+ 0.000000 39  -0.0020
+ 0.000000 40   0.0019
+ 0.000000 41  -0.0005
+ 0.000000 42   0.0016
+ 0.000000 43  -0.0053
+ 0.000000 44   0.0001
+ 0.000000 45  -0.0031
+ 0.000000 46  -0.0020
+ 0.000000 47  -0.0020
+ 0.000000 48  -0.0014
+ 0.000000 49   0.0010
+ 0.000000 50  -0.0059
+ 0.000000 51   0.0021
+ 0.000000 52  -0.0023
+ 0.000000 53   0.0027
+ 0.000000 54   0.0011
+ 0.000000 55   0.0006
+ 0.000000 56  -0.0010
+ 0.000000 57  -0.0005
+ 0.000000 58  -0.0017
+ 0.000000 59  -0.0010
+ 0.000000 60  -0.0001
+ 0.000000 61   0.0010
+ 0.000000 62   0.0016
+ 0.000000 63   0.0017
+ 0.000000 64   0.0000
+ 0.000000 65  -0.0029
+ 0.000000 66   0.0003
+ 0.000000 67   0.0033
+ 0.000000 68  -0.0041
+ 0.000000 69  -0.0007
+ 0.000000 70   0.0014
+ 0.000000 71  -0.0004
+ 0.000000 72   0.0029
+ 0.000000 73   0.0013
+ 0.000000 74  -0.0008
+ 0.000000 75   0.0017
+ 0.000000 76  -0.0046
+ 0.000000 77  -0.0000
+ 0.000000 78   0.0009
+ 0.000000 79  -0.0008
+ 0.000000 80   0.0009
+ 0.000000 81  -0.0001
+ 0.000000 82  -0.0002
+ 0.000000 83  -0.0006
+ 0.000000 84   0.0009
+ 0.000000 85  -0.0012
+ 0.000000 86   0.0001
+ 0.000000 87   0.0015
+ 0.000000 88   0.0018
+ 0.000000 89  -0.0039
+ 0.000000 90   0.0008
+ 0.000000 91   0.0005
+ 0.000000 92   0.0029
+ 0.000000 93   0.0025
+ 0.000000 94   0.0016
+ 0.000000 95   0.0016
+ 0.000000 96  -0.0017
+ 0.000000 97  -0.0001
+ 0.000000 98   0.0022
+ 0.000000 99  -0.0024
+ 0.000000 100   0.0009
+ 0.000000 101   0.0004
+ 0.000000 102  -0.0017
+ 0.000000 103  -0.0014
+ 0.000000 104   0.0004
+ 0.000000 105   0.0002
+ 0.000000 106  -0.0033
+ 0.000000 107  -0.0020
+ 0.000000 108  -0.0001
+ 0.000000 109   0.0039
+ 0.000000 110   0.0014
+ 0.000000 111  -0.0004
+ 0.000000 112   0.0018
+ 0.000000 113  -0.0021
+ 0.000000 114   0.0037
+ 0.000000 115  -0.0004
+ 0.000000 116   0.0011
+ 0.000000 117   0.0042
+ 0.000000 118  -0.0016
+ 0.000000 119  -0.0004
+ 0.000000 120   0.0011
+ 0.000000 121  -0.0003
+ 0.000000 122   0.0016
+ 0.000000 123   0.0018
+ 0.000000 124   0.0034
+ 0.000000 125   0.0002
+ 0.000000 126   0.0009
+ 0.000000 127   0.0013
+ 0.000000 128   0.0007
+ 0.000000 129   0.0010
+ 0.000000 130  -0.0032
+ 0.000000 131   0.0021
+ 0.000000 132  -0.0027
+ 0.000000 133  -0.0000
+ 0.000000 134   0.0009
+ 0.000000 135  -0.0045
+ 0.000000 136  -0.0014
+ 0.000000 137  -0.0014
+ 0.000000 138   0.0004
+ 0.000000 139  -0.0003
+ 0.000000 140  -0.0025
+ 0.000000 141   0.0032
+ 0.000000 142   0.0037
+ 0.000000 143   0.0005
+ 0.000000 144  -0.0003
+ 0.000000 145   0.0047
+ 0.000000 146  -0.0015
+ 0.000000 147  -0.0011
+ 0.000000 148   0.0004
+ 0.000000 149  -0.0015
+ 0.000000 150  -0.0006
+ 0.000000 151  -0.0028
+ 0.000000 152   0.0036
+ 0.000000 153  -0.0040
+ 0.000000 154  -0.0003
+ 0.000000 155  -0.0031
+ 0.000000 156   0.0021
+ 0.000000 157  -0.0002
+ 0.000000 158   0.0002
+ 0.000000 159   0.0016
+ 0.000000 160   0.0010
+ 0.000000 161   0.0036
+ 0.000000 162  -0.0004
+ 0.000000 163  -0.0028
+ 0.000000 164   0.0055
+ 0.000000 165   0.0014
+ 0.000000 166  -0.0034
+ 0.000000 167   0.0023
+ 0.000000 168  -0.0002
+ 0.000000 169  -0.0002
+ 0.000000 170  -0.0006
+ 0.000000 171  -0.0009
+ 0.000000 172   0.0009
+ 0.000000 173  -0.0003
+ 0.000000 174   0.0032
+ 0.000000 175  -0.0053
+ 0.000000 176   0.0037
+ 0.000000 177  -0.0019
+ 0.000000 178  -0.0020
+ 0.000000 179   0.0011
+ 0.000000 180  -0.0000
+ 0.000000 181   0.0060
+ 0.000000 182  -0.0033
+ 0.000000 183  -0.0027
+ 0.000000 184   0.0016
+ 0.000000 185   0.0005
+ 0.000000 186  -0.0009
+ 0.000000 187  -0.0031
+ 0.000000 188  -0.0009
+ 0.000000 189  -0.0005
+ 0.000000 190   0.0049
+ 0.000000 191   0.0003
+ 0.000000 192  -0.1431
+ 0.000000 193  -0.0326
+ 0.000000 194   0.0101
+ 0.000000 195  -0.0326
+ 0.000000 196  -0.1712
+ 0.000000 197   0.0351
+ 0.000000 198   0.0101
+ 0.000000 199   0.0351
+ 0.000000 200  -0.1192
diff --git a/regtest/crystallization/rt-q6-lowmem/deriv3.reference b/regtest/crystallization/rt-q6-lowmem/deriv3.reference
new file mode 100644
index 000000000..2692feba4
--- /dev/null
+++ b/regtest/crystallization/rt-q6-lowmem/deriv3.reference
@@ -0,0 +1,202 @@
+#! FIELDS time parameter w6.mean
+ 0.000000 0   0.0017
+ 0.000000 1   0.0017
+ 0.000000 2   0.0049
+ 0.000000 3  -0.0079
+ 0.000000 4   0.0010
+ 0.000000 5  -0.0191
+ 0.000000 6   0.0042
+ 0.000000 7   0.0026
+ 0.000000 8  -0.0191
+ 0.000000 9  -0.0045
+ 0.000000 10   0.0010
+ 0.000000 11   0.0068
+ 0.000000 12  -0.0001
+ 0.000000 13   0.0001
+ 0.000000 14   0.0001
+ 0.000000 15  -0.0004
+ 0.000000 16  -0.0072
+ 0.000000 17  -0.0002
+ 0.000000 18  -0.0069
+ 0.000000 19  -0.0003
+ 0.000000 20  -0.0000
+ 0.000000 21  -0.0015
+ 0.000000 22  -0.0003
+ 0.000000 23  -0.0023
+ 0.000000 24   0.0072
+ 0.000000 25  -0.0040
+ 0.000000 26  -0.0057
+ 0.000000 27   0.0023
+ 0.000000 28  -0.0078
+ 0.000000 29   0.0012
+ 0.000000 30  -0.0029
+ 0.000000 31   0.0131
+ 0.000000 32   0.0032
+ 0.000000 33   0.0033
+ 0.000000 34  -0.0012
+ 0.000000 35   0.0079
+ 0.000000 36   0.0002
+ 0.000000 37  -0.0002
+ 0.000000 38  -0.0054
+ 0.000000 39   0.0017
+ 0.000000 40   0.0049
+ 0.000000 41   0.0065
+ 0.000000 42  -0.0022
+ 0.000000 43   0.0053
+ 0.000000 44   0.0015
+ 0.000000 45   0.0113
+ 0.000000 46   0.0021
+ 0.000000 47   0.0040
+ 0.000000 48  -0.0040
+ 0.000000 49  -0.0010
+ 0.000000 50  -0.0038
+ 0.000000 51  -0.0027
+ 0.000000 52   0.0047
+ 0.000000 53  -0.0066
+ 0.000000 54   0.0000
+ 0.000000 55   0.0066
+ 0.000000 56   0.0076
+ 0.000000 57  -0.0008
+ 0.000000 58  -0.0033
+ 0.000000 59  -0.0064
+ 0.000000 60  -0.0007
+ 0.000000 61  -0.0101
+ 0.000000 62  -0.0022
+ 0.000000 63  -0.0087
+ 0.000000 64   0.0100
+ 0.000000 65   0.0074
+ 0.000000 66  -0.0004
+ 0.000000 67   0.0031
+ 0.000000 68  -0.0076
+ 0.000000 69   0.0045
+ 0.000000 70  -0.0045
+ 0.000000 71  -0.0019
+ 0.000000 72   0.0048
+ 0.000000 73   0.0098
+ 0.000000 74   0.0093
+ 0.000000 75  -0.0042
+ 0.000000 76  -0.0076
+ 0.000000 77  -0.0009
+ 0.000000 78   0.0060
+ 0.000000 79  -0.0106
+ 0.000000 80  -0.0006
+ 0.000000 81  -0.0031
+ 0.000000 82  -0.0031
+ 0.000000 83   0.0004
+ 0.000000 84   0.0034
+ 0.000000 85   0.0012
+ 0.000000 86  -0.0012
+ 0.000000 87  -0.0002
+ 0.000000 88  -0.0075
+ 0.000000 89   0.0214
+ 0.000000 90   0.0007
+ 0.000000 91   0.0037
+ 0.000000 92   0.0057
+ 0.000000 93   0.0081
+ 0.000000 94   0.0026
+ 0.000000 95  -0.0120
+ 0.000000 96   0.0061
+ 0.000000 97   0.0051
+ 0.000000 98  -0.0013
+ 0.000000 99   0.0005
+ 0.000000 100   0.0022
+ 0.000000 101  -0.0038
+ 0.000000 102  -0.0045
+ 0.000000 103  -0.0058
+ 0.000000 104  -0.0015
+ 0.000000 105   0.0149
+ 0.000000 106  -0.0006
+ 0.000000 107   0.0064
+ 0.000000 108   0.0011
+ 0.000000 109   0.0127
+ 0.000000 110  -0.0015
+ 0.000000 111   0.0012
+ 0.000000 112   0.0023
+ 0.000000 113  -0.0029
+ 0.000000 114   0.0085
+ 0.000000 115  -0.0047
+ 0.000000 116  -0.0120
+ 0.000000 117   0.0090
+ 0.000000 118   0.0005
+ 0.000000 119   0.0119
+ 0.000000 120  -0.0053
+ 0.000000 121  -0.0054
+ 0.000000 122   0.0036
+ 0.000000 123   0.0026
+ 0.000000 124  -0.0051
+ 0.000000 125  -0.0119
+ 0.000000 126  -0.0028
+ 0.000000 127  -0.0041
+ 0.000000 128   0.0008
+ 0.000000 129   0.0006
+ 0.000000 130  -0.0136
+ 0.000000 131  -0.0040
+ 0.000000 132  -0.0037
+ 0.000000 133   0.0007
+ 0.000000 134  -0.0078
+ 0.000000 135   0.0070
+ 0.000000 136  -0.0022
+ 0.000000 137   0.0096
+ 0.000000 138   0.0094
+ 0.000000 139  -0.0005
+ 0.000000 140  -0.0005
+ 0.000000 141  -0.0022
+ 0.000000 142   0.0025
+ 0.000000 143   0.0113
+ 0.000000 144   0.0033
+ 0.000000 145   0.0013
+ 0.000000 146   0.0012
+ 0.000000 147  -0.0076
+ 0.000000 148   0.0015
+ 0.000000 149  -0.0030
+ 0.000000 150  -0.0055
+ 0.000000 151   0.0080
+ 0.000000 152   0.0098
+ 0.000000 153  -0.0048
+ 0.000000 154   0.0001
+ 0.000000 155  -0.0062
+ 0.000000 156   0.0065
+ 0.000000 157  -0.0024
+ 0.000000 158  -0.0151
+ 0.000000 159  -0.0066
+ 0.000000 160  -0.0061
+ 0.000000 161  -0.0043
+ 0.000000 162  -0.0081
+ 0.000000 163  -0.0085
+ 0.000000 164   0.0119
+ 0.000000 165   0.0063
+ 0.000000 166  -0.0047
+ 0.000000 167   0.0134
+ 0.000000 168   0.0060
+ 0.000000 169   0.0087
+ 0.000000 170   0.0066
+ 0.000000 171  -0.0009
+ 0.000000 172   0.0114
+ 0.000000 173   0.0004
+ 0.000000 174  -0.0004
+ 0.000000 175  -0.0097
+ 0.000000 176   0.0144
+ 0.000000 177  -0.0117
+ 0.000000 178   0.0026
+ 0.000000 179   0.0020
+ 0.000000 180  -0.0007
+ 0.000000 181   0.0015
+ 0.000000 182  -0.0189
+ 0.000000 183  -0.0024
+ 0.000000 184  -0.0105
+ 0.000000 185   0.0025
+ 0.000000 186  -0.0088
+ 0.000000 187  -0.0002
+ 0.000000 188   0.0007
+ 0.000000 189  -0.0152
+ 0.000000 190   0.0183
+ 0.000000 191  -0.0046
+ 0.000000 192   0.0519
+ 0.000000 193  -0.0782
+ 0.000000 194  -0.0255
+ 0.000000 195  -0.0782
+ 0.000000 196  -0.1128
+ 0.000000 197   0.0867
+ 0.000000 198  -0.0255
+ 0.000000 199   0.0867
+ 0.000000 200  -0.0399
diff --git a/regtest/crystallization/rt-q6-lowmem/plumed.dat b/regtest/crystallization/rt-q6-lowmem/plumed.dat
new file mode 100644
index 000000000..7c76774d7
--- /dev/null
+++ b/regtest/crystallization/rt-q6-lowmem/plumed.dat
@@ -0,0 +1,9 @@
+Q6 SPECIES=1-64 D_0=3.0 R_0=1.5 MEAN LABEL=q6 
+# Q6 SPECIES=1-64 D_0=3.0 R_0=1.5 MEAN NUMERICAL_DERIVATIVES LABEL=q6n
+PRINT ARG=q6.* FILE=colv 
+DUMPDERIVATIVES ARG=q6.* FILE=deriv FMT=%8.4f
+
+LOCAL_Q6 ARG=q6 SWITCH={RATIONAL D_0=3.0 R_0=1.5} MEAN LOWMEM LABEL=w6
+PRINT ARG=w6.* FILE=colv3
+DUMPDERIVATIVES ARG=w6.* FILE=deriv3 FMT=%8.4f
+
diff --git a/regtest/crystallization/rt-q6-subset/64.xyz b/regtest/crystallization/rt-q6-subset/64.xyz
new file mode 100755
index 000000000..90b3ae19c
--- /dev/null
+++ b/regtest/crystallization/rt-q6-subset/64.xyz
@@ -0,0 +1,66 @@
+   64
+12.41642 12.41642 12.41642 
+  Ge       1.473000000000      2.211000000000      8.700200000000
+  Ge       4.886500000000      3.830000000000      6.593500000000
+  Ge       3.807000000000      1.978700000000     10.045000000000
+  Ge       5.002000000000      3.883500000000      1.357000000000
+  Ge       9.636000000000      1.604000000000      8.697700000000
+  Ge       6.559800000000     11.084000000000      9.650400000000
+  Ge       0.627000000000      0.390000000000      2.224300000000
+  Ge       3.341900000000      6.765300000000      1.369500000000
+  Ge       5.032000000000      9.650500000000      2.785000000000
+  Ge       1.682700000000     10.392700000000      5.459500000000
+  Ge       3.517300000000     12.039000000000      5.930600000000
+  Ge       1.072000000000      5.374900000000     12.335000000000
+  Ge       0.863390000000     11.308000000000      0.275000000000
+  Ge       5.867800000000      0.672000000000      6.605200000000
+  Ge       3.961000000000      8.414000000000      8.691600000000
+  Ge      11.570960000000     10.444000000000      2.125000000000
+  Ge       1.736000000000      6.845200000000      6.129000000000
+  Ge       7.557300000000      8.842800000000      6.611800000000
+  Ge       2.785800000000      2.591200000000      1.833300000000
+  Ge      11.564000000000     11.555000000000     10.928000000000
+  Ge       3.324000000000     11.334000000000     12.095000000000
+  Ge      10.532000000000      9.377700000000      6.724000000000
+  Ge       7.157000000000     11.468000000000     12.063000000000
+  Ge       0.027000000000      4.622000000000      5.996200000000
+  Ge       4.564000000000      6.513200000000      5.370200000000
+  Ge      12.189770000000      7.981000000000      2.257000000000
+  Ge       8.973100000000      0.437000000000      4.852800000000
+  Ge       9.086200000000      9.857000000000      0.975000000000
+  Ge       6.516500000000     12.170000000000      2.438600000000
+  Ge       8.955900000000      4.612000000000      4.478000000000
+  Ge       7.419000000000      3.301600000000      0.450000000000
+  Ge      10.808000000000      7.170600000000     11.109000000000
+  Te       4.818200000000      9.096200000000      6.189300000000
+  Te      10.663400000000      6.726900000000      5.343000000000
+  Te       7.021700000000      4.814600000000     10.649000000000
+  Te       3.253500000000      5.713300000000      8.267800000000
+  Te      10.322000000000      1.250000000000      2.209500000000
+  Te       0.300000000000      5.033000000000      8.902400000000
+  Te      12.092000000000      0.227000000000      8.527200000000
+  Te       6.329000000000      2.634100000000      8.525500000000
+  Te       8.044800000000     11.712000000000      7.575400000000
+  Te       2.150000000000      8.302000000000      3.591400000000
+  Te      11.581000000000     11.201000000000      4.824700000000
+  Te       3.960900000000      4.755000000000     11.528710000000
+  Te       3.815300000000     12.139000000000      3.263700000000
+  Te       9.419700000000      7.232700000000      1.010000000000
+  Te       1.211700000000      1.726300000000     12.223470000000
+  Te       0.798460000000      8.988100000000      7.517700000000
+  Te      10.078000000000      9.503000000000      9.977500000000
+  Te       9.336700000000      0.894000000000     11.469560000000
+  Te       7.251000000000      5.783400000000      6.399000000000
+  Te       3.740000000000     11.515000000000      9.383700000000
+  Te      10.329000000000      2.726600000000      5.835100000000
+  Te       6.722900000000      8.386100000000      9.226500000000
+  Te       1.247000000000      4.660000000000      2.609100000000
+  Te       5.628500000000      6.170200000000      2.845000000000
+  Te       4.742900000000      9.191800000000      0.212000000000
+  Te       5.134400000000      0.984830000000     12.244000000000
+  Te       8.033800000000     10.061100000000      3.578600000000
+  Te       9.840000000000      4.825000000000      9.743000000000
+  Te       6.760000000000      2.189000000000      4.410700000000
+  Te       2.334000000000      2.201000000000      6.079000000000
+  Te       9.930600000000      3.982900000000      1.562000000000
+  Te       0.806810000000      8.091100000000     12.264000000000
diff --git a/regtest/crystallization/rt-q6-subset/Makefile b/regtest/crystallization/rt-q6-subset/Makefile
new file mode 100644
index 000000000..3703b27ce
--- /dev/null
+++ b/regtest/crystallization/rt-q6-subset/Makefile
@@ -0,0 +1 @@
+include ../../scripts/test.make
diff --git a/regtest/crystallization/rt-q6-subset/colv3.reference b/regtest/crystallization/rt-q6-subset/colv3.reference
new file mode 100644
index 000000000..17de575c4
--- /dev/null
+++ b/regtest/crystallization/rt-q6-subset/colv3.reference
@@ -0,0 +1,2 @@
+#! FIELDS time w6.mean
+ 0.000000 -0.005288
diff --git a/regtest/crystallization/rt-q6-subset/config b/regtest/crystallization/rt-q6-subset/config
new file mode 100644
index 000000000..e07432072
--- /dev/null
+++ b/regtest/crystallization/rt-q6-subset/config
@@ -0,0 +1,3 @@
+type=driver
+# this is to test a different name
+arg="--plumed plumed.dat --ixyz 64.xyz"
diff --git a/regtest/crystallization/rt-q6-subset/deriv3.reference b/regtest/crystallization/rt-q6-subset/deriv3.reference
new file mode 100644
index 000000000..4baa519f0
--- /dev/null
+++ b/regtest/crystallization/rt-q6-subset/deriv3.reference
@@ -0,0 +1,586 @@
+#! FIELDS time parameter w6.mean
+ 0.000000 0  -0.0191
+ 0.000000 1  -0.0137
+ 0.000000 2   0.0086
+ 0.000000 3  -0.0108
+ 0.000000 4   0.0103
+ 0.000000 5  -0.0439
+ 0.000000 6   0.0300
+ 0.000000 7  -0.0181
+ 0.000000 8  -0.0697
+ 0.000000 9  -0.0128
+ 0.000000 10  -0.0013
+ 0.000000 11   0.0243
+ 0.000000 12   0.0036
+ 0.000000 13   0.0324
+ 0.000000 14   0.0102
+ 0.000000 15  -0.0072
+ 0.000000 16   0.0092
+ 0.000000 17   0.0004
+ 0.000000 18  -0.0106
+ 0.000000 19  -0.0049
+ 0.000000 20  -0.0031
+ 0.000000 21   0.0087
+ 0.000000 22  -0.0073
+ 0.000000 23  -0.0134
+ 0.000000 24  -0.0027
+ 0.000000 25   0.0038
+ 0.000000 26  -0.0061
+ 0.000000 27  -0.0024
+ 0.000000 28   0.0045
+ 0.000000 29  -0.0032
+ 0.000000 30  -0.0134
+ 0.000000 31  -0.0220
+ 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 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 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 49  -0.0055
+ 0.000000 50   0.0012
+ 0.000000 51  -0.0006
+ 0.000000 52  -0.0006
+ 0.000000 53   0.0005
+ 0.000000 54   0.0070
+ 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 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 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 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 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 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 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 120   0.0055
+ 0.000000 121   0.0043
+ 0.000000 122   0.0234
+ 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 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 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 156  -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 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 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 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 204  -0.0000
+ 0.000000 205   0.0000
+ 0.000000 206  -0.0000
+ 0.000000 207   0.0012
+ 0.000000 208  -0.0027
+ 0.000000 209   0.0013
+ 0.000000 210   0.0000
+ 0.000000 211  -0.0003
+ 0.000000 212  -0.0001
+ 0.000000 213   0.0013
+ 0.000000 214   0.0109
+ 0.000000 215  -0.0054
+ 0.000000 216  -0.0001
+ 0.000000 217   0.0002
+ 0.000000 218   0.0004
+ 0.000000 219  -0.0003
+ 0.000000 220  -0.0015
+ 0.000000 221  -0.0009
+ 0.000000 222  -0.0018
+ 0.000000 223   0.0074
+ 0.000000 224   0.0049
+ 0.000000 225  -0.0098
+ 0.000000 226   0.0064
+ 0.000000 227   0.0011
+ 0.000000 228   0.0016
+ 0.000000 229   0.0001
+ 0.000000 230   0.0016
+ 0.000000 231  -0.0085
+ 0.000000 232   0.0037
+ 0.000000 233  -0.0005
+ 0.000000 234  -0.0006
+ 0.000000 235  -0.0015
+ 0.000000 236   0.0006
+ 0.000000 237  -0.0000
+ 0.000000 238  -0.0000
+ 0.000000 239   0.0000
+ 0.000000 240   0.0069
+ 0.000000 241  -0.0061
+ 0.000000 242   0.0014
+ 0.000000 243  -0.0003
+ 0.000000 244  -0.0006
+ 0.000000 245   0.0003
+ 0.000000 246   0.0048
+ 0.000000 247  -0.0115
+ 0.000000 248   0.0025
+ 0.000000 249   0.0009
+ 0.000000 250   0.0041
+ 0.000000 251  -0.0083
+ 0.000000 252  -0.0006
+ 0.000000 253   0.0068
+ 0.000000 254   0.0001
+ 0.000000 255   0.0000
+ 0.000000 256   0.0009
+ 0.000000 257  -0.0004
+ 0.000000 258   0.0008
+ 0.000000 259   0.0038
+ 0.000000 260  -0.0048
+ 0.000000 261  -0.0014
+ 0.000000 262  -0.0003
+ 0.000000 263  -0.0011
+ 0.000000 264   0.0004
+ 0.000000 265   0.0107
+ 0.000000 266   0.0161
+ 0.000000 267   0.0001
+ 0.000000 268   0.0000
+ 0.000000 269   0.0000
+ 0.000000 270   0.0019
+ 0.000000 271  -0.0042
+ 0.000000 272   0.0042
+ 0.000000 273   0.0001
+ 0.000000 274   0.0000
+ 0.000000 275  -0.0000
+ 0.000000 276  -0.0000
+ 0.000000 277  -0.0006
+ 0.000000 278  -0.0035
+ 0.000000 279  -0.0038
+ 0.000000 280  -0.0016
+ 0.000000 281   0.0070
+ 0.000000 282   0.0031
+ 0.000000 283  -0.0100
+ 0.000000 284  -0.0019
+ 0.000000 285   0.0000
+ 0.000000 286   0.0002
+ 0.000000 287  -0.0002
+ 0.000000 288  -0.0000
+ 0.000000 289   0.0000
+ 0.000000 290   0.0003
+ 0.000000 291   0.0000
+ 0.000000 292   0.0002
+ 0.000000 293  -0.0001
+ 0.000000 294  -0.0030
+ 0.000000 295   0.0048
+ 0.000000 296   0.0060
+ 0.000000 297   0.0113
+ 0.000000 298  -0.0078
+ 0.000000 299   0.0079
+ 0.000000 300  -0.0001
+ 0.000000 301  -0.0002
+ 0.000000 302   0.0002
+ 0.000000 303   0.0006
+ 0.000000 304  -0.0045
+ 0.000000 305   0.0061
+ 0.000000 306   0.0022
+ 0.000000 307  -0.0150
+ 0.000000 308  -0.0067
+ 0.000000 309   0.0277
+ 0.000000 310   0.0061
+ 0.000000 311   0.0226
+ 0.000000 312  -0.0072
+ 0.000000 313   0.0080
+ 0.000000 314   0.0053
+ 0.000000 315  -0.0001
+ 0.000000 316   0.0004
+ 0.000000 317   0.0002
+ 0.000000 318  -0.0002
+ 0.000000 319  -0.0002
+ 0.000000 320   0.0000
+ 0.000000 321  -0.0234
+ 0.000000 322  -0.0020
+ 0.000000 323   0.0061
+ 0.000000 324  -0.0012
+ 0.000000 325  -0.0022
+ 0.000000 326  -0.0000
+ 0.000000 327   0.0007
+ 0.000000 328   0.0005
+ 0.000000 329  -0.0003
+ 0.000000 330  -0.0066
+ 0.000000 331   0.0033
+ 0.000000 332  -0.0013
+ 0.000000 333   0.0001
+ 0.000000 334   0.0003
+ 0.000000 335   0.0000
+ 0.000000 336  -0.0029
+ 0.000000 337   0.0040
+ 0.000000 338  -0.0033
+ 0.000000 339  -0.0066
+ 0.000000 340  -0.0127
+ 0.000000 341   0.0058
+ 0.000000 342   0.0030
+ 0.000000 343   0.0047
+ 0.000000 344   0.0002
+ 0.000000 345   0.0075
+ 0.000000 346   0.0008
+ 0.000000 347   0.0018
+ 0.000000 348   0.0150
+ 0.000000 349  -0.0102
+ 0.000000 350   0.0095
+ 0.000000 351   0.0000
+ 0.000000 352  -0.0003
+ 0.000000 353   0.0005
+ 0.000000 354   0.0068
+ 0.000000 355  -0.0007
+ 0.000000 356  -0.0097
+ 0.000000 357  -0.0122
+ 0.000000 358  -0.0060
+ 0.000000 359   0.0256
+ 0.000000 360  -0.0002
+ 0.000000 361  -0.0002
+ 0.000000 362  -0.0003
+ 0.000000 363  -0.0015
+ 0.000000 364   0.0046
+ 0.000000 365   0.0023
+ 0.000000 366   0.0000
+ 0.000000 367  -0.0000
+ 0.000000 368  -0.0000
+ 0.000000 369   0.0063
+ 0.000000 370   0.0013
+ 0.000000 371   0.0095
+ 0.000000 372  -0.0019
+ 0.000000 373  -0.0001
+ 0.000000 374  -0.0106
+ 0.000000 375  -0.0117
+ 0.000000 376  -0.0073
+ 0.000000 377   0.0053
+ 0.000000 378  -0.0024
+ 0.000000 379  -0.0001
+ 0.000000 380  -0.0005
+ 0.000000 381  -0.0002
+ 0.000000 382   0.0001
+ 0.000000 383  -0.0001
+ 0.000000 384  -0.0017
+ 0.000000 385  -0.0011
+ 0.000000 386  -0.0071
+ 0.000000 387  -0.0053
+ 0.000000 388   0.0011
+ 0.000000 389  -0.0123
+ 0.000000 390   0.0020
+ 0.000000 391  -0.0009
+ 0.000000 392   0.0006
+ 0.000000 393   0.0075
+ 0.000000 394   0.0046
+ 0.000000 395   0.0039
+ 0.000000 396   0.0108
+ 0.000000 397  -0.0059
+ 0.000000 398   0.0081
+ 0.000000 399  -0.0021
+ 0.000000 400  -0.0004
+ 0.000000 401  -0.0004
+ 0.000000 402   0.0054
+ 0.000000 403  -0.0027
+ 0.000000 404   0.0005
+ 0.000000 405   0.0059
+ 0.000000 406   0.0053
+ 0.000000 407  -0.0034
+ 0.000000 408  -0.0024
+ 0.000000 409   0.0009
+ 0.000000 410   0.0003
+ 0.000000 411  -0.0010
+ 0.000000 412  -0.0049
+ 0.000000 413   0.0025
+ 0.000000 414   0.0010
+ 0.000000 415  -0.0052
+ 0.000000 416   0.0062
+ 0.000000 417  -0.0084
+ 0.000000 418   0.0037
+ 0.000000 419   0.0035
+ 0.000000 420   0.0023
+ 0.000000 421   0.0001
+ 0.000000 422   0.0052
+ 0.000000 423   0.0012
+ 0.000000 424   0.0111
+ 0.000000 425   0.0006
+ 0.000000 426   0.0050
+ 0.000000 427  -0.0016
+ 0.000000 428  -0.0008
+ 0.000000 429  -0.0047
+ 0.000000 430   0.0037
+ 0.000000 431   0.0004
+ 0.000000 432  -0.0065
+ 0.000000 433   0.0000
+ 0.000000 434  -0.0060
+ 0.000000 435  -0.0014
+ 0.000000 436  -0.0048
+ 0.000000 437  -0.0010
+ 0.000000 438  -0.0020
+ 0.000000 439  -0.0050
+ 0.000000 440  -0.0004
+ 0.000000 441   0.0036
+ 0.000000 442   0.0069
+ 0.000000 443  -0.0035
+ 0.000000 444  -0.0086
+ 0.000000 445   0.0052
+ 0.000000 446  -0.0016
+ 0.000000 447  -0.0002
+ 0.000000 448   0.0058
+ 0.000000 449  -0.0011
+ 0.000000 450   0.0006
+ 0.000000 451   0.0015
+ 0.000000 452  -0.0064
+ 0.000000 453   0.0039
+ 0.000000 454   0.0065
+ 0.000000 455  -0.0128
+ 0.000000 456   0.0001
+ 0.000000 457   0.0023
+ 0.000000 458  -0.0008
+ 0.000000 459   0.0036
+ 0.000000 460   0.0021
+ 0.000000 461   0.0002
+ 0.000000 462   0.0063
+ 0.000000 463  -0.0021
+ 0.000000 464   0.0005
+ 0.000000 465   0.0048
+ 0.000000 466  -0.0013
+ 0.000000 467   0.0001
+ 0.000000 468   0.0041
+ 0.000000 469  -0.0008
+ 0.000000 470  -0.0061
+ 0.000000 471   0.0046
+ 0.000000 472  -0.0015
+ 0.000000 473   0.0066
+ 0.000000 474   0.0095
+ 0.000000 475  -0.0014
+ 0.000000 476  -0.0008
+ 0.000000 477  -0.0079
+ 0.000000 478  -0.0016
+ 0.000000 479  -0.0057
+ 0.000000 480   0.0023
+ 0.000000 481   0.0030
+ 0.000000 482  -0.0125
+ 0.000000 483   0.0014
+ 0.000000 484   0.0076
+ 0.000000 485  -0.0005
+ 0.000000 486  -0.0090
+ 0.000000 487  -0.0003
+ 0.000000 488  -0.0069
+ 0.000000 489  -0.0041
+ 0.000000 490  -0.0083
+ 0.000000 491   0.0012
+ 0.000000 492  -0.0025
+ 0.000000 493   0.0085
+ 0.000000 494   0.0036
+ 0.000000 495   0.0052
+ 0.000000 496  -0.0105
+ 0.000000 497   0.0021
+ 0.000000 498   0.0005
+ 0.000000 499  -0.0120
+ 0.000000 500  -0.0061
+ 0.000000 501   0.0051
+ 0.000000 502  -0.0043
+ 0.000000 503  -0.0001
+ 0.000000 504  -0.0041
+ 0.000000 505   0.0107
+ 0.000000 506   0.0041
+ 0.000000 507  -0.0021
+ 0.000000 508  -0.0059
+ 0.000000 509   0.0050
+ 0.000000 510   0.0024
+ 0.000000 511   0.0032
+ 0.000000 512  -0.0068
+ 0.000000 513  -0.0140
+ 0.000000 514   0.0019
+ 0.000000 515  -0.0068
+ 0.000000 516   0.0017
+ 0.000000 517   0.0071
+ 0.000000 518   0.0010
+ 0.000000 519   0.0105
+ 0.000000 520   0.0057
+ 0.000000 521   0.0011
+ 0.000000 522  -0.0001
+ 0.000000 523   0.0062
+ 0.000000 524  -0.0000
+ 0.000000 525   0.0021
+ 0.000000 526  -0.0025
+ 0.000000 527  -0.0020
+ 0.000000 528  -0.0047
+ 0.000000 529  -0.0034
+ 0.000000 530  -0.0043
+ 0.000000 531  -0.0005
+ 0.000000 532  -0.0045
+ 0.000000 533  -0.0014
+ 0.000000 534  -0.0084
+ 0.000000 535  -0.0012
+ 0.000000 536  -0.0023
+ 0.000000 537  -0.0022
+ 0.000000 538  -0.0096
+ 0.000000 539  -0.0013
+ 0.000000 540   0.0134
+ 0.000000 541  -0.0018
+ 0.000000 542   0.0017
+ 0.000000 543  -0.0111
+ 0.000000 544   0.0019
+ 0.000000 545  -0.0031
+ 0.000000 546   0.0064
+ 0.000000 547   0.0009
+ 0.000000 548  -0.0135
+ 0.000000 549   0.0007
+ 0.000000 550   0.0006
+ 0.000000 551   0.0105
+ 0.000000 552   0.0005
+ 0.000000 553   0.0014
+ 0.000000 554  -0.0022
+ 0.000000 555  -0.0012
+ 0.000000 556   0.0060
+ 0.000000 557   0.0008
+ 0.000000 558   0.0025
+ 0.000000 559   0.0027
+ 0.000000 560   0.0021
+ 0.000000 561  -0.0055
+ 0.000000 562   0.0032
+ 0.000000 563   0.0013
+ 0.000000 564  -0.0069
+ 0.000000 565  -0.0046
+ 0.000000 566  -0.0031
+ 0.000000 567  -0.0114
+ 0.000000 568   0.0003
+ 0.000000 569   0.0010
+ 0.000000 570  -0.0065
+ 0.000000 571   0.0040
+ 0.000000 572  -0.0078
+ 0.000000 573   0.0011
+ 0.000000 574   0.0004
+ 0.000000 575  -0.0037
+ 0.000000 576  -0.0231
+ 0.000000 577  -0.1953
+ 0.000000 578   0.0762
+ 0.000000 579  -0.1953
+ 0.000000 580   0.0424
+ 0.000000 581  -0.1586
+ 0.000000 582   0.0762
+ 0.000000 583  -0.1586
+ 0.000000 584  -0.0484
diff --git a/regtest/crystallization/rt-q6-subset/plumed.dat b/regtest/crystallization/rt-q6-subset/plumed.dat
new file mode 100644
index 000000000..6fcffbed0
--- /dev/null
+++ b/regtest/crystallization/rt-q6-subset/plumed.dat
@@ -0,0 +1,7 @@
+Q6 SPECIESA=1-5 SPECIESB=1-64 D_0=3.0 R_0=1.5 LABEL=q6a
+Q6 SPECIESA=6-64 SPECIESB=1-64 D_0=3.0 R_0=1.5 LABEL=q6b
+
+LOCAL_Q6 ARG=q6a,q6b SWITCH={RATIONAL D_0=3.0 R_0=1.5} MEAN LOWMEM LABEL=w6
+PRINT ARG=w6.* FILE=colv3
+DUMPDERIVATIVES ARG=w6.* FILE=deriv3 FMT=%8.4f
+
diff --git a/regtest/crystallization/rt-q6/64.xyz b/regtest/crystallization/rt-q6/64.xyz
new file mode 100755
index 000000000..90b3ae19c
--- /dev/null
+++ b/regtest/crystallization/rt-q6/64.xyz
@@ -0,0 +1,66 @@
+   64
+12.41642 12.41642 12.41642 
+  Ge       1.473000000000      2.211000000000      8.700200000000
+  Ge       4.886500000000      3.830000000000      6.593500000000
+  Ge       3.807000000000      1.978700000000     10.045000000000
+  Ge       5.002000000000      3.883500000000      1.357000000000
+  Ge       9.636000000000      1.604000000000      8.697700000000
+  Ge       6.559800000000     11.084000000000      9.650400000000
+  Ge       0.627000000000      0.390000000000      2.224300000000
+  Ge       3.341900000000      6.765300000000      1.369500000000
+  Ge       5.032000000000      9.650500000000      2.785000000000
+  Ge       1.682700000000     10.392700000000      5.459500000000
+  Ge       3.517300000000     12.039000000000      5.930600000000
+  Ge       1.072000000000      5.374900000000     12.335000000000
+  Ge       0.863390000000     11.308000000000      0.275000000000
+  Ge       5.867800000000      0.672000000000      6.605200000000
+  Ge       3.961000000000      8.414000000000      8.691600000000
+  Ge      11.570960000000     10.444000000000      2.125000000000
+  Ge       1.736000000000      6.845200000000      6.129000000000
+  Ge       7.557300000000      8.842800000000      6.611800000000
+  Ge       2.785800000000      2.591200000000      1.833300000000
+  Ge      11.564000000000     11.555000000000     10.928000000000
+  Ge       3.324000000000     11.334000000000     12.095000000000
+  Ge      10.532000000000      9.377700000000      6.724000000000
+  Ge       7.157000000000     11.468000000000     12.063000000000
+  Ge       0.027000000000      4.622000000000      5.996200000000
+  Ge       4.564000000000      6.513200000000      5.370200000000
+  Ge      12.189770000000      7.981000000000      2.257000000000
+  Ge       8.973100000000      0.437000000000      4.852800000000
+  Ge       9.086200000000      9.857000000000      0.975000000000
+  Ge       6.516500000000     12.170000000000      2.438600000000
+  Ge       8.955900000000      4.612000000000      4.478000000000
+  Ge       7.419000000000      3.301600000000      0.450000000000
+  Ge      10.808000000000      7.170600000000     11.109000000000
+  Te       4.818200000000      9.096200000000      6.189300000000
+  Te      10.663400000000      6.726900000000      5.343000000000
+  Te       7.021700000000      4.814600000000     10.649000000000
+  Te       3.253500000000      5.713300000000      8.267800000000
+  Te      10.322000000000      1.250000000000      2.209500000000
+  Te       0.300000000000      5.033000000000      8.902400000000
+  Te      12.092000000000      0.227000000000      8.527200000000
+  Te       6.329000000000      2.634100000000      8.525500000000
+  Te       8.044800000000     11.712000000000      7.575400000000
+  Te       2.150000000000      8.302000000000      3.591400000000
+  Te      11.581000000000     11.201000000000      4.824700000000
+  Te       3.960900000000      4.755000000000     11.528710000000
+  Te       3.815300000000     12.139000000000      3.263700000000
+  Te       9.419700000000      7.232700000000      1.010000000000
+  Te       1.211700000000      1.726300000000     12.223470000000
+  Te       0.798460000000      8.988100000000      7.517700000000
+  Te      10.078000000000      9.503000000000      9.977500000000
+  Te       9.336700000000      0.894000000000     11.469560000000
+  Te       7.251000000000      5.783400000000      6.399000000000
+  Te       3.740000000000     11.515000000000      9.383700000000
+  Te      10.329000000000      2.726600000000      5.835100000000
+  Te       6.722900000000      8.386100000000      9.226500000000
+  Te       1.247000000000      4.660000000000      2.609100000000
+  Te       5.628500000000      6.170200000000      2.845000000000
+  Te       4.742900000000      9.191800000000      0.212000000000
+  Te       5.134400000000      0.984830000000     12.244000000000
+  Te       8.033800000000     10.061100000000      3.578600000000
+  Te       9.840000000000      4.825000000000      9.743000000000
+  Te       6.760000000000      2.189000000000      4.410700000000
+  Te       2.334000000000      2.201000000000      6.079000000000
+  Te       9.930600000000      3.982900000000      1.562000000000
+  Te       0.806810000000      8.091100000000     12.264000000000
diff --git a/regtest/crystallization/rt-q6/Makefile b/regtest/crystallization/rt-q6/Makefile
new file mode 100644
index 000000000..3703b27ce
--- /dev/null
+++ b/regtest/crystallization/rt-q6/Makefile
@@ -0,0 +1 @@
+include ../../scripts/test.make
diff --git a/regtest/crystallization/rt-q6/colv.reference b/regtest/crystallization/rt-q6/colv.reference
new file mode 100644
index 000000000..8d69c80ee
--- /dev/null
+++ b/regtest/crystallization/rt-q6/colv.reference
@@ -0,0 +1,2 @@
+#! FIELDS time q6.mean
+ 0.000000 0.245096
diff --git a/regtest/crystallization/rt-q6/colv2.reference b/regtest/crystallization/rt-q6/colv2.reference
new file mode 100644
index 000000000..9429375c7
--- /dev/null
+++ b/regtest/crystallization/rt-q6/colv2.reference
@@ -0,0 +1,2 @@
+#! FIELDS time c.mean
+ 0.000000 13.570253
diff --git a/regtest/crystallization/rt-q6/colv3.reference b/regtest/crystallization/rt-q6/colv3.reference
new file mode 100644
index 000000000..511ac4b22
--- /dev/null
+++ b/regtest/crystallization/rt-q6/colv3.reference
@@ -0,0 +1,2 @@
+#! FIELDS time w6.mean
+ 0.000000 0.036242
diff --git a/regtest/crystallization/rt-q6/colv4.reference b/regtest/crystallization/rt-q6/colv4.reference
new file mode 100644
index 000000000..8bd82ca05
--- /dev/null
+++ b/regtest/crystallization/rt-q6/colv4.reference
@@ -0,0 +1,2 @@
+#! FIELDS time q4.mean
+ 0.000000 0.153825
diff --git a/regtest/crystallization/rt-q6/config b/regtest/crystallization/rt-q6/config
new file mode 100644
index 000000000..e07432072
--- /dev/null
+++ b/regtest/crystallization/rt-q6/config
@@ -0,0 +1,3 @@
+type=driver
+# this is to test a different name
+arg="--plumed plumed.dat --ixyz 64.xyz"
diff --git a/regtest/crystallization/rt-q6/deriv.reference b/regtest/crystallization/rt-q6/deriv.reference
new file mode 100644
index 000000000..a7c522e73
--- /dev/null
+++ b/regtest/crystallization/rt-q6/deriv.reference
@@ -0,0 +1,202 @@
+#! FIELDS time parameter q6.mean
+ 0.000000 0   0.0012
+ 0.000000 1   0.0016
+ 0.000000 2  -0.0017
+ 0.000000 3  -0.0003
+ 0.000000 4   0.0017
+ 0.000000 5  -0.0031
+ 0.000000 6  -0.0013
+ 0.000000 7  -0.0015
+ 0.000000 8  -0.0023
+ 0.000000 9   0.0000
+ 0.000000 10   0.0022
+ 0.000000 11   0.0030
+ 0.000000 12  -0.0009
+ 0.000000 13  -0.0010
+ 0.000000 14  -0.0002
+ 0.000000 15  -0.0018
+ 0.000000 16  -0.0026
+ 0.000000 17  -0.0006
+ 0.000000 18   0.0009
+ 0.000000 19  -0.0008
+ 0.000000 20   0.0013
+ 0.000000 21  -0.0024
+ 0.000000 22   0.0041
+ 0.000000 23  -0.0008
+ 0.000000 24   0.0026
+ 0.000000 25  -0.0023
+ 0.000000 26  -0.0015
+ 0.000000 27  -0.0021
+ 0.000000 28   0.0029
+ 0.000000 29   0.0037
+ 0.000000 30  -0.0017
+ 0.000000 31  -0.0015
+ 0.000000 32   0.0018
+ 0.000000 33  -0.0027
+ 0.000000 34  -0.0000
+ 0.000000 35   0.0003
+ 0.000000 36   0.0006
+ 0.000000 37  -0.0016
+ 0.000000 38   0.0004
+ 0.000000 39  -0.0020
+ 0.000000 40   0.0019
+ 0.000000 41  -0.0005
+ 0.000000 42   0.0016
+ 0.000000 43  -0.0053
+ 0.000000 44   0.0001
+ 0.000000 45  -0.0031
+ 0.000000 46  -0.0020
+ 0.000000 47  -0.0020
+ 0.000000 48  -0.0014
+ 0.000000 49   0.0010
+ 0.000000 50  -0.0059
+ 0.000000 51   0.0021
+ 0.000000 52  -0.0023
+ 0.000000 53   0.0027
+ 0.000000 54   0.0011
+ 0.000000 55   0.0006
+ 0.000000 56  -0.0010
+ 0.000000 57  -0.0005
+ 0.000000 58  -0.0017
+ 0.000000 59  -0.0010
+ 0.000000 60  -0.0001
+ 0.000000 61   0.0010
+ 0.000000 62   0.0016
+ 0.000000 63   0.0017
+ 0.000000 64   0.0000
+ 0.000000 65  -0.0029
+ 0.000000 66   0.0003
+ 0.000000 67   0.0033
+ 0.000000 68  -0.0041
+ 0.000000 69  -0.0007
+ 0.000000 70   0.0014
+ 0.000000 71  -0.0004
+ 0.000000 72   0.0029
+ 0.000000 73   0.0013
+ 0.000000 74  -0.0008
+ 0.000000 75   0.0017
+ 0.000000 76  -0.0046
+ 0.000000 77  -0.0000
+ 0.000000 78   0.0009
+ 0.000000 79  -0.0008
+ 0.000000 80   0.0009
+ 0.000000 81  -0.0001
+ 0.000000 82  -0.0002
+ 0.000000 83  -0.0006
+ 0.000000 84   0.0009
+ 0.000000 85  -0.0012
+ 0.000000 86   0.0001
+ 0.000000 87   0.0015
+ 0.000000 88   0.0018
+ 0.000000 89  -0.0039
+ 0.000000 90   0.0008
+ 0.000000 91   0.0005
+ 0.000000 92   0.0029
+ 0.000000 93   0.0025
+ 0.000000 94   0.0016
+ 0.000000 95   0.0016
+ 0.000000 96  -0.0017
+ 0.000000 97  -0.0001
+ 0.000000 98   0.0022
+ 0.000000 99  -0.0024
+ 0.000000 100   0.0009
+ 0.000000 101   0.0004
+ 0.000000 102  -0.0017
+ 0.000000 103  -0.0014
+ 0.000000 104   0.0004
+ 0.000000 105   0.0002
+ 0.000000 106  -0.0033
+ 0.000000 107  -0.0020
+ 0.000000 108  -0.0001
+ 0.000000 109   0.0039
+ 0.000000 110   0.0014
+ 0.000000 111  -0.0004
+ 0.000000 112   0.0018
+ 0.000000 113  -0.0021
+ 0.000000 114   0.0037
+ 0.000000 115  -0.0004
+ 0.000000 116   0.0011
+ 0.000000 117   0.0042
+ 0.000000 118  -0.0016
+ 0.000000 119  -0.0004
+ 0.000000 120   0.0011
+ 0.000000 121  -0.0003
+ 0.000000 122   0.0016
+ 0.000000 123   0.0018
+ 0.000000 124   0.0034
+ 0.000000 125   0.0002
+ 0.000000 126   0.0009
+ 0.000000 127   0.0013
+ 0.000000 128   0.0007
+ 0.000000 129   0.0010
+ 0.000000 130  -0.0032
+ 0.000000 131   0.0021
+ 0.000000 132  -0.0027
+ 0.000000 133  -0.0000
+ 0.000000 134   0.0009
+ 0.000000 135  -0.0045
+ 0.000000 136  -0.0014
+ 0.000000 137  -0.0014
+ 0.000000 138   0.0004
+ 0.000000 139  -0.0003
+ 0.000000 140  -0.0025
+ 0.000000 141   0.0032
+ 0.000000 142   0.0037
+ 0.000000 143   0.0005
+ 0.000000 144  -0.0003
+ 0.000000 145   0.0047
+ 0.000000 146  -0.0015
+ 0.000000 147  -0.0011
+ 0.000000 148   0.0004
+ 0.000000 149  -0.0015
+ 0.000000 150  -0.0006
+ 0.000000 151  -0.0028
+ 0.000000 152   0.0036
+ 0.000000 153  -0.0040
+ 0.000000 154  -0.0003
+ 0.000000 155  -0.0031
+ 0.000000 156   0.0021
+ 0.000000 157  -0.0002
+ 0.000000 158   0.0002
+ 0.000000 159   0.0016
+ 0.000000 160   0.0010
+ 0.000000 161   0.0036
+ 0.000000 162  -0.0004
+ 0.000000 163  -0.0028
+ 0.000000 164   0.0055
+ 0.000000 165   0.0014
+ 0.000000 166  -0.0034
+ 0.000000 167   0.0023
+ 0.000000 168  -0.0002
+ 0.000000 169  -0.0002
+ 0.000000 170  -0.0006
+ 0.000000 171  -0.0009
+ 0.000000 172   0.0009
+ 0.000000 173  -0.0003
+ 0.000000 174   0.0032
+ 0.000000 175  -0.0053
+ 0.000000 176   0.0037
+ 0.000000 177  -0.0019
+ 0.000000 178  -0.0020
+ 0.000000 179   0.0011
+ 0.000000 180  -0.0000
+ 0.000000 181   0.0060
+ 0.000000 182  -0.0033
+ 0.000000 183  -0.0027
+ 0.000000 184   0.0016
+ 0.000000 185   0.0005
+ 0.000000 186  -0.0009
+ 0.000000 187  -0.0031
+ 0.000000 188  -0.0009
+ 0.000000 189  -0.0005
+ 0.000000 190   0.0049
+ 0.000000 191   0.0003
+ 0.000000 192  -0.1431
+ 0.000000 193  -0.0326
+ 0.000000 194   0.0101
+ 0.000000 195  -0.0326
+ 0.000000 196  -0.1712
+ 0.000000 197   0.0351
+ 0.000000 198   0.0101
+ 0.000000 199   0.0351
+ 0.000000 200  -0.1192
diff --git a/regtest/crystallization/rt-q6/deriv2.reference b/regtest/crystallization/rt-q6/deriv2.reference
new file mode 100644
index 000000000..33b692b27
--- /dev/null
+++ b/regtest/crystallization/rt-q6/deriv2.reference
@@ -0,0 +1,202 @@
+#! FIELDS time parameter c.mean
+ 0.000000 0   0.0097
+ 0.000000 1  -0.0011
+ 0.000000 2   0.0021
+ 0.000000 3  -0.0394
+ 0.000000 4   0.0102
+ 0.000000 5   0.0040
+ 0.000000 6   0.0262
+ 0.000000 7   0.0234
+ 0.000000 8  -0.0092
+ 0.000000 9  -0.0410
+ 0.000000 10  -0.0517
+ 0.000000 11   0.0031
+ 0.000000 12  -0.0217
+ 0.000000 13  -0.0134
+ 0.000000 14  -0.0057
+ 0.000000 15  -0.0011
+ 0.000000 16   0.0435
+ 0.000000 17  -0.0060
+ 0.000000 18  -0.0021
+ 0.000000 19  -0.0027
+ 0.000000 20   0.0279
+ 0.000000 21  -0.0030
+ 0.000000 22  -0.0048
+ 0.000000 23   0.0250
+ 0.000000 24   0.0056
+ 0.000000 25   0.0392
+ 0.000000 26   0.0204
+ 0.000000 27   0.0104
+ 0.000000 28   0.0120
+ 0.000000 29  -0.0064
+ 0.000000 30   0.0051
+ 0.000000 31  -0.0027
+ 0.000000 32   0.0143
+ 0.000000 33  -0.0089
+ 0.000000 34  -0.0177
+ 0.000000 35  -0.0153
+ 0.000000 36   0.0081
+ 0.000000 37   0.0058
+ 0.000000 38   0.0060
+ 0.000000 39   0.0140
+ 0.000000 40  -0.0551
+ 0.000000 41  -0.0152
+ 0.000000 42   0.0027
+ 0.000000 43   0.0130
+ 0.000000 44   0.0054
+ 0.000000 45  -0.0078
+ 0.000000 46   0.0027
+ 0.000000 47   0.0034
+ 0.000000 48  -0.0020
+ 0.000000 49  -0.0247
+ 0.000000 50  -0.0523
+ 0.000000 51  -0.0227
+ 0.000000 52   0.0411
+ 0.000000 53  -0.0164
+ 0.000000 54   0.0507
+ 0.000000 55  -0.0270
+ 0.000000 56  -0.0041
+ 0.000000 57   0.0178
+ 0.000000 58  -0.0327
+ 0.000000 59   0.0111
+ 0.000000 60  -0.0226
+ 0.000000 61  -0.0163
+ 0.000000 62   0.0183
+ 0.000000 63   0.0010
+ 0.000000 64   0.0038
+ 0.000000 65  -0.0115
+ 0.000000 66   0.0263
+ 0.000000 67   0.0133
+ 0.000000 68  -0.0225
+ 0.000000 69   0.0137
+ 0.000000 70   0.0298
+ 0.000000 71   0.0288
+ 0.000000 72  -0.0176
+ 0.000000 73   0.0002
+ 0.000000 74  -0.0362
+ 0.000000 75   0.0012
+ 0.000000 76   0.0366
+ 0.000000 77   0.0618
+ 0.000000 78   0.0363
+ 0.000000 79  -0.0291
+ 0.000000 80   0.0062
+ 0.000000 81   0.0065
+ 0.000000 82   0.0436
+ 0.000000 83  -0.0052
+ 0.000000 84  -0.0335
+ 0.000000 85   0.0507
+ 0.000000 86  -0.0176
+ 0.000000 87  -0.0421
+ 0.000000 88  -0.0190
+ 0.000000 89  -0.0439
+ 0.000000 90  -0.0161
+ 0.000000 91  -0.0130
+ 0.000000 92   0.0097
+ 0.000000 93  -0.0292
+ 0.000000 94   0.0403
+ 0.000000 95   0.0037
+ 0.000000 96   0.0280
+ 0.000000 97   0.0328
+ 0.000000 98   0.0060
+ 0.000000 99   0.0391
+ 0.000000 100   0.0353
+ 0.000000 101  -0.0400
+ 0.000000 102   0.0064
+ 0.000000 103  -0.0312
+ 0.000000 104  -0.0096
+ 0.000000 105   0.0576
+ 0.000000 106  -0.0213
+ 0.000000 107   0.0062
+ 0.000000 108  -0.0314
+ 0.000000 109  -0.0415
+ 0.000000 110  -0.0242
+ 0.000000 111   0.0201
+ 0.000000 112  -0.0282
+ 0.000000 113  -0.0207
+ 0.000000 114   0.0460
+ 0.000000 115  -0.0120
+ 0.000000 116  -0.0141
+ 0.000000 117  -0.0271
+ 0.000000 118  -0.0292
+ 0.000000 119   0.0454
+ 0.000000 120   0.0001
+ 0.000000 121   0.0197
+ 0.000000 122  -0.0060
+ 0.000000 123  -0.0321
+ 0.000000 124   0.0626
+ 0.000000 125  -0.0135
+ 0.000000 126   0.0164
+ 0.000000 127  -0.0240
+ 0.000000 128   0.0045
+ 0.000000 129  -0.0391
+ 0.000000 130   0.0116
+ 0.000000 131  -0.0139
+ 0.000000 132   0.0054
+ 0.000000 133  -0.0348
+ 0.000000 134  -0.0281
+ 0.000000 135  -0.0199
+ 0.000000 136  -0.0443
+ 0.000000 137  -0.0068
+ 0.000000 138  -0.0165
+ 0.000000 139   0.0111
+ 0.000000 140  -0.0048
+ 0.000000 141   0.0374
+ 0.000000 142  -0.0216
+ 0.000000 143   0.0240
+ 0.000000 144   0.0112
+ 0.000000 145   0.0245
+ 0.000000 146   0.0321
+ 0.000000 147  -0.0017
+ 0.000000 148  -0.0077
+ 0.000000 149  -0.0134
+ 0.000000 150  -0.0074
+ 0.000000 151  -0.0199
+ 0.000000 152   0.0592
+ 0.000000 153  -0.0233
+ 0.000000 154  -0.0017
+ 0.000000 155  -0.0161
+ 0.000000 156   0.0194
+ 0.000000 157  -0.0028
+ 0.000000 158   0.0438
+ 0.000000 159   0.0039
+ 0.000000 160  -0.0017
+ 0.000000 161   0.0189
+ 0.000000 162   0.0178
+ 0.000000 163  -0.0033
+ 0.000000 164   0.0215
+ 0.000000 165   0.0011
+ 0.000000 166  -0.0257
+ 0.000000 167   0.0101
+ 0.000000 168  -0.0109
+ 0.000000 169   0.0328
+ 0.000000 170   0.0256
+ 0.000000 171   0.0062
+ 0.000000 172  -0.0062
+ 0.000000 173  -0.0137
+ 0.000000 174  -0.0162
+ 0.000000 175   0.0071
+ 0.000000 176   0.0204
+ 0.000000 177  -0.0114
+ 0.000000 178  -0.0090
+ 0.000000 179  -0.0025
+ 0.000000 180  -0.0231
+ 0.000000 181   0.0044
+ 0.000000 182  -0.0187
+ 0.000000 183  -0.0119
+ 0.000000 184   0.0134
+ 0.000000 185  -0.0111
+ 0.000000 186   0.0253
+ 0.000000 187   0.0153
+ 0.000000 188  -0.0110
+ 0.000000 189   0.0067
+ 0.000000 190  -0.0028
+ 0.000000 191  -0.0329
+ 0.000000 192  15.4541
+ 0.000000 193   0.4015
+ 0.000000 194   0.1687
+ 0.000000 195   0.4015
+ 0.000000 196  14.7038
+ 0.000000 197   0.3340
+ 0.000000 198   0.1687
+ 0.000000 199   0.3340
+ 0.000000 200  15.4941
diff --git a/regtest/crystallization/rt-q6/deriv3.reference b/regtest/crystallization/rt-q6/deriv3.reference
new file mode 100644
index 000000000..2692feba4
--- /dev/null
+++ b/regtest/crystallization/rt-q6/deriv3.reference
@@ -0,0 +1,202 @@
+#! FIELDS time parameter w6.mean
+ 0.000000 0   0.0017
+ 0.000000 1   0.0017
+ 0.000000 2   0.0049
+ 0.000000 3  -0.0079
+ 0.000000 4   0.0010
+ 0.000000 5  -0.0191
+ 0.000000 6   0.0042
+ 0.000000 7   0.0026
+ 0.000000 8  -0.0191
+ 0.000000 9  -0.0045
+ 0.000000 10   0.0010
+ 0.000000 11   0.0068
+ 0.000000 12  -0.0001
+ 0.000000 13   0.0001
+ 0.000000 14   0.0001
+ 0.000000 15  -0.0004
+ 0.000000 16  -0.0072
+ 0.000000 17  -0.0002
+ 0.000000 18  -0.0069
+ 0.000000 19  -0.0003
+ 0.000000 20  -0.0000
+ 0.000000 21  -0.0015
+ 0.000000 22  -0.0003
+ 0.000000 23  -0.0023
+ 0.000000 24   0.0072
+ 0.000000 25  -0.0040
+ 0.000000 26  -0.0057
+ 0.000000 27   0.0023
+ 0.000000 28  -0.0078
+ 0.000000 29   0.0012
+ 0.000000 30  -0.0029
+ 0.000000 31   0.0131
+ 0.000000 32   0.0032
+ 0.000000 33   0.0033
+ 0.000000 34  -0.0012
+ 0.000000 35   0.0079
+ 0.000000 36   0.0002
+ 0.000000 37  -0.0002
+ 0.000000 38  -0.0054
+ 0.000000 39   0.0017
+ 0.000000 40   0.0049
+ 0.000000 41   0.0065
+ 0.000000 42  -0.0022
+ 0.000000 43   0.0053
+ 0.000000 44   0.0015
+ 0.000000 45   0.0113
+ 0.000000 46   0.0021
+ 0.000000 47   0.0040
+ 0.000000 48  -0.0040
+ 0.000000 49  -0.0010
+ 0.000000 50  -0.0038
+ 0.000000 51  -0.0027
+ 0.000000 52   0.0047
+ 0.000000 53  -0.0066
+ 0.000000 54   0.0000
+ 0.000000 55   0.0066
+ 0.000000 56   0.0076
+ 0.000000 57  -0.0008
+ 0.000000 58  -0.0033
+ 0.000000 59  -0.0064
+ 0.000000 60  -0.0007
+ 0.000000 61  -0.0101
+ 0.000000 62  -0.0022
+ 0.000000 63  -0.0087
+ 0.000000 64   0.0100
+ 0.000000 65   0.0074
+ 0.000000 66  -0.0004
+ 0.000000 67   0.0031
+ 0.000000 68  -0.0076
+ 0.000000 69   0.0045
+ 0.000000 70  -0.0045
+ 0.000000 71  -0.0019
+ 0.000000 72   0.0048
+ 0.000000 73   0.0098
+ 0.000000 74   0.0093
+ 0.000000 75  -0.0042
+ 0.000000 76  -0.0076
+ 0.000000 77  -0.0009
+ 0.000000 78   0.0060
+ 0.000000 79  -0.0106
+ 0.000000 80  -0.0006
+ 0.000000 81  -0.0031
+ 0.000000 82  -0.0031
+ 0.000000 83   0.0004
+ 0.000000 84   0.0034
+ 0.000000 85   0.0012
+ 0.000000 86  -0.0012
+ 0.000000 87  -0.0002
+ 0.000000 88  -0.0075
+ 0.000000 89   0.0214
+ 0.000000 90   0.0007
+ 0.000000 91   0.0037
+ 0.000000 92   0.0057
+ 0.000000 93   0.0081
+ 0.000000 94   0.0026
+ 0.000000 95  -0.0120
+ 0.000000 96   0.0061
+ 0.000000 97   0.0051
+ 0.000000 98  -0.0013
+ 0.000000 99   0.0005
+ 0.000000 100   0.0022
+ 0.000000 101  -0.0038
+ 0.000000 102  -0.0045
+ 0.000000 103  -0.0058
+ 0.000000 104  -0.0015
+ 0.000000 105   0.0149
+ 0.000000 106  -0.0006
+ 0.000000 107   0.0064
+ 0.000000 108   0.0011
+ 0.000000 109   0.0127
+ 0.000000 110  -0.0015
+ 0.000000 111   0.0012
+ 0.000000 112   0.0023
+ 0.000000 113  -0.0029
+ 0.000000 114   0.0085
+ 0.000000 115  -0.0047
+ 0.000000 116  -0.0120
+ 0.000000 117   0.0090
+ 0.000000 118   0.0005
+ 0.000000 119   0.0119
+ 0.000000 120  -0.0053
+ 0.000000 121  -0.0054
+ 0.000000 122   0.0036
+ 0.000000 123   0.0026
+ 0.000000 124  -0.0051
+ 0.000000 125  -0.0119
+ 0.000000 126  -0.0028
+ 0.000000 127  -0.0041
+ 0.000000 128   0.0008
+ 0.000000 129   0.0006
+ 0.000000 130  -0.0136
+ 0.000000 131  -0.0040
+ 0.000000 132  -0.0037
+ 0.000000 133   0.0007
+ 0.000000 134  -0.0078
+ 0.000000 135   0.0070
+ 0.000000 136  -0.0022
+ 0.000000 137   0.0096
+ 0.000000 138   0.0094
+ 0.000000 139  -0.0005
+ 0.000000 140  -0.0005
+ 0.000000 141  -0.0022
+ 0.000000 142   0.0025
+ 0.000000 143   0.0113
+ 0.000000 144   0.0033
+ 0.000000 145   0.0013
+ 0.000000 146   0.0012
+ 0.000000 147  -0.0076
+ 0.000000 148   0.0015
+ 0.000000 149  -0.0030
+ 0.000000 150  -0.0055
+ 0.000000 151   0.0080
+ 0.000000 152   0.0098
+ 0.000000 153  -0.0048
+ 0.000000 154   0.0001
+ 0.000000 155  -0.0062
+ 0.000000 156   0.0065
+ 0.000000 157  -0.0024
+ 0.000000 158  -0.0151
+ 0.000000 159  -0.0066
+ 0.000000 160  -0.0061
+ 0.000000 161  -0.0043
+ 0.000000 162  -0.0081
+ 0.000000 163  -0.0085
+ 0.000000 164   0.0119
+ 0.000000 165   0.0063
+ 0.000000 166  -0.0047
+ 0.000000 167   0.0134
+ 0.000000 168   0.0060
+ 0.000000 169   0.0087
+ 0.000000 170   0.0066
+ 0.000000 171  -0.0009
+ 0.000000 172   0.0114
+ 0.000000 173   0.0004
+ 0.000000 174  -0.0004
+ 0.000000 175  -0.0097
+ 0.000000 176   0.0144
+ 0.000000 177  -0.0117
+ 0.000000 178   0.0026
+ 0.000000 179   0.0020
+ 0.000000 180  -0.0007
+ 0.000000 181   0.0015
+ 0.000000 182  -0.0189
+ 0.000000 183  -0.0024
+ 0.000000 184  -0.0105
+ 0.000000 185   0.0025
+ 0.000000 186  -0.0088
+ 0.000000 187  -0.0002
+ 0.000000 188   0.0007
+ 0.000000 189  -0.0152
+ 0.000000 190   0.0183
+ 0.000000 191  -0.0046
+ 0.000000 192   0.0519
+ 0.000000 193  -0.0782
+ 0.000000 194  -0.0255
+ 0.000000 195  -0.0782
+ 0.000000 196  -0.1128
+ 0.000000 197   0.0867
+ 0.000000 198  -0.0255
+ 0.000000 199   0.0867
+ 0.000000 200  -0.0399
diff --git a/regtest/crystallization/rt-q6/deriv4.reference b/regtest/crystallization/rt-q6/deriv4.reference
new file mode 100644
index 000000000..80babbe05
--- /dev/null
+++ b/regtest/crystallization/rt-q6/deriv4.reference
@@ -0,0 +1,202 @@
+#! FIELDS time parameter q4.mean
+ 0.000000 0   0.0019
+ 0.000000 1  -0.0025
+ 0.000000 2  -0.0023
+ 0.000000 3   0.0007
+ 0.000000 4   0.0026
+ 0.000000 5   0.0016
+ 0.000000 6  -0.0005
+ 0.000000 7  -0.0020
+ 0.000000 8   0.0010
+ 0.000000 9   0.0047
+ 0.000000 10   0.0019
+ 0.000000 11   0.0002
+ 0.000000 12   0.0009
+ 0.000000 13   0.0002
+ 0.000000 14  -0.0009
+ 0.000000 15  -0.0009
+ 0.000000 16  -0.0022
+ 0.000000 17   0.0005
+ 0.000000 18  -0.0009
+ 0.000000 19   0.0014
+ 0.000000 20  -0.0026
+ 0.000000 21   0.0003
+ 0.000000 22   0.0002
+ 0.000000 23   0.0001
+ 0.000000 24  -0.0026
+ 0.000000 25  -0.0005
+ 0.000000 26   0.0016
+ 0.000000 27  -0.0007
+ 0.000000 28   0.0001
+ 0.000000 29  -0.0004
+ 0.000000 30   0.0004
+ 0.000000 31   0.0001
+ 0.000000 32  -0.0029
+ 0.000000 33   0.0007
+ 0.000000 34  -0.0014
+ 0.000000 35   0.0006
+ 0.000000 36   0.0029
+ 0.000000 37  -0.0010
+ 0.000000 38  -0.0015
+ 0.000000 39  -0.0003
+ 0.000000 40   0.0023
+ 0.000000 41   0.0012
+ 0.000000 42   0.0000
+ 0.000000 43   0.0003
+ 0.000000 44  -0.0003
+ 0.000000 45   0.0012
+ 0.000000 46   0.0005
+ 0.000000 47   0.0016
+ 0.000000 48  -0.0002
+ 0.000000 49   0.0020
+ 0.000000 50   0.0010
+ 0.000000 51  -0.0018
+ 0.000000 52  -0.0004
+ 0.000000 53   0.0011
+ 0.000000 54  -0.0028
+ 0.000000 55   0.0024
+ 0.000000 56   0.0022
+ 0.000000 57   0.0006
+ 0.000000 58   0.0006
+ 0.000000 59  -0.0019
+ 0.000000 60   0.0033
+ 0.000000 61  -0.0023
+ 0.000000 62  -0.0018
+ 0.000000 63   0.0036
+ 0.000000 64  -0.0012
+ 0.000000 65   0.0005
+ 0.000000 66  -0.0031
+ 0.000000 67  -0.0018
+ 0.000000 68  -0.0007
+ 0.000000 69  -0.0014
+ 0.000000 70  -0.0007
+ 0.000000 71   0.0000
+ 0.000000 72   0.0007
+ 0.000000 73  -0.0003
+ 0.000000 74   0.0007
+ 0.000000 75   0.0029
+ 0.000000 76   0.0044
+ 0.000000 77  -0.0035
+ 0.000000 78  -0.0030
+ 0.000000 79   0.0040
+ 0.000000 80  -0.0001
+ 0.000000 81  -0.0037
+ 0.000000 82  -0.0005
+ 0.000000 83   0.0010
+ 0.000000 84   0.0017
+ 0.000000 85  -0.0008
+ 0.000000 86   0.0016
+ 0.000000 87   0.0023
+ 0.000000 88   0.0012
+ 0.000000 89   0.0048
+ 0.000000 90  -0.0021
+ 0.000000 91   0.0005
+ 0.000000 92  -0.0011
+ 0.000000 93  -0.0017
+ 0.000000 94  -0.0020
+ 0.000000 95  -0.0001
+ 0.000000 96   0.0026
+ 0.000000 97  -0.0016
+ 0.000000 98  -0.0003
+ 0.000000 99  -0.0027
+ 0.000000 100  -0.0015
+ 0.000000 101   0.0047
+ 0.000000 102   0.0028
+ 0.000000 103   0.0039
+ 0.000000 104   0.0004
+ 0.000000 105  -0.0030
+ 0.000000 106   0.0014
+ 0.000000 107   0.0001
+ 0.000000 108   0.0028
+ 0.000000 109   0.0031
+ 0.000000 110  -0.0004
+ 0.000000 111  -0.0002
+ 0.000000 112   0.0024
+ 0.000000 113   0.0005
+ 0.000000 114  -0.0003
+ 0.000000 115   0.0005
+ 0.000000 116   0.0032
+ 0.000000 117  -0.0031
+ 0.000000 118   0.0006
+ 0.000000 119  -0.0039
+ 0.000000 120  -0.0045
+ 0.000000 121   0.0007
+ 0.000000 122   0.0013
+ 0.000000 123  -0.0003
+ 0.000000 124  -0.0036
+ 0.000000 125   0.0021
+ 0.000000 126   0.0043
+ 0.000000 127  -0.0007
+ 0.000000 128  -0.0023
+ 0.000000 129   0.0044
+ 0.000000 130   0.0018
+ 0.000000 131   0.0012
+ 0.000000 132  -0.0005
+ 0.000000 133  -0.0017
+ 0.000000 134  -0.0003
+ 0.000000 135  -0.0025
+ 0.000000 136   0.0026
+ 0.000000 137   0.0005
+ 0.000000 138  -0.0021
+ 0.000000 139  -0.0000
+ 0.000000 140   0.0016
+ 0.000000 141  -0.0032
+ 0.000000 142  -0.0006
+ 0.000000 143  -0.0024
+ 0.000000 144   0.0021
+ 0.000000 145  -0.0033
+ 0.000000 146   0.0005
+ 0.000000 147   0.0008
+ 0.000000 148  -0.0003
+ 0.000000 149  -0.0002
+ 0.000000 150   0.0018
+ 0.000000 151  -0.0005
+ 0.000000 152  -0.0012
+ 0.000000 153  -0.0005
+ 0.000000 154  -0.0004
+ 0.000000 155   0.0007
+ 0.000000 156  -0.0012
+ 0.000000 157  -0.0007
+ 0.000000 158  -0.0054
+ 0.000000 159  -0.0003
+ 0.000000 160   0.0004
+ 0.000000 161   0.0002
+ 0.000000 162   0.0009
+ 0.000000 163  -0.0023
+ 0.000000 164  -0.0023
+ 0.000000 165  -0.0008
+ 0.000000 166   0.0012
+ 0.000000 167  -0.0020
+ 0.000000 168   0.0003
+ 0.000000 169   0.0014
+ 0.000000 170   0.0002
+ 0.000000 171  -0.0010
+ 0.000000 172  -0.0017
+ 0.000000 173  -0.0004
+ 0.000000 174  -0.0005
+ 0.000000 175  -0.0011
+ 0.000000 176  -0.0000
+ 0.000000 177   0.0002
+ 0.000000 178  -0.0005
+ 0.000000 179  -0.0023
+ 0.000000 180   0.0014
+ 0.000000 181  -0.0042
+ 0.000000 182   0.0017
+ 0.000000 183  -0.0024
+ 0.000000 184  -0.0000
+ 0.000000 185   0.0009
+ 0.000000 186   0.0005
+ 0.000000 187  -0.0017
+ 0.000000 188   0.0010
+ 0.000000 189   0.0013
+ 0.000000 190   0.0014
+ 0.000000 191   0.0011
+ 0.000000 192  -0.2881
+ 0.000000 193  -0.0055
+ 0.000000 194  -0.0166
+ 0.000000 195  -0.0055
+ 0.000000 196  -0.2648
+ 0.000000 197  -0.0367
+ 0.000000 198  -0.0166
+ 0.000000 199  -0.0367
+ 0.000000 200  -0.2513
diff --git a/regtest/crystallization/rt-q6/plumed.dat b/regtest/crystallization/rt-q6/plumed.dat
new file mode 100644
index 000000000..f027c26db
--- /dev/null
+++ b/regtest/crystallization/rt-q6/plumed.dat
@@ -0,0 +1,19 @@
+COORDINATIONNUMBER SPECIES=1-64 SWITCH={RATIONAL D_0=3.0 R_0=1.5} MEAN LABEL=c
+# COORDINATIONNUMBER SPECIES=1-64 SWITCH={RATIONAL D_0=3.0 R_0=1.5} MEAN NUMERICAL_DERIVATIVES LABEL=cn
+PRINT ARG=c.* FILE=colv2
+DUMPDERIVATIVES ARG=c.* FILE=deriv2 FMT=%8.4f 
+
+Q6 SPECIES=1-64 D_0=3.0 R_0=1.5 MEAN LABEL=q6 
+# Q6 SPECIES=1-64 D_0=3.0 R_0=1.5 MEAN NUMERICAL_DERIVATIVES LABEL=q6n
+PRINT ARG=q6.* FILE=colv 
+DUMPDERIVATIVES ARG=q6.* FILE=deriv FMT=%8.4f
+
+Q4 SPECIES=1-64 D_0=3.0 R_0=1.5 MEAN LABEL=q4
+# Q4 SPECIES=1-64 D_0=3.0 R_0=1.5 MEAN NUMERICAL_DERIVATIVES LABEL=q4n
+PRINT ARG=q4.* FILE=colv4
+DUMPDERIVATIVES ARG=q4.* FILE=deriv4 FMT=%8.4f
+
+LOCAL_Q6 ARG=q6 SWITCH={RATIONAL D_0=3.0 R_0=1.5} MEAN LABEL=w6
+# LOCAL_Q6 ARG=q6 SWITCH={RATIONAL D_0=3.0 R_0=1.5} MEAN NUMERICAL_DERIVATIVES LABEL=w6n
+PRINT ARG=w6.* FILE=colv3
+DUMPDERIVATIVES ARG=w6.* FILE=deriv3 FMT=%8.4f
diff --git a/src/.gitignore b/src/.gitignore
index 61e6c24c3..9dafd6791 100644
--- a/src/.gitignore
+++ b/src/.gitignore
@@ -9,6 +9,7 @@
 !/colvar
 !/config
 !/core
+!/crystallization
 !/function
 !/generic
 !/header.sh
diff --git a/src/crystallization/.gitignore b/src/crystallization/.gitignore
new file mode 100644
index 000000000..488855233
--- /dev/null
+++ b/src/crystallization/.gitignore
@@ -0,0 +1,9 @@
+/*
+# in this directory, only accept source, Makefile and README
+!/.gitignore
+!/*.c
+!/*.cpp
+!/*.h
+!/Makefile
+!/README
+!/module.type
diff --git a/src/crystallization/LocalSteinhardt.h b/src/crystallization/LocalSteinhardt.h
new file mode 100644
index 000000000..e82b544b8
--- /dev/null
+++ b/src/crystallization/LocalSteinhardt.h
@@ -0,0 +1,44 @@
+/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+   Copyright (c) 2012 The plumed team
+   (see the PEOPLE file at the root of the distribution for a list of names)
+
+   See http://www.plumed-code.org for more information.
+
+   This file is part of plumed, version 2.0.
+
+   plumed is free software: you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   plumed is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with plumed.  If not, see <http://www.gnu.org/licenses/>.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
+#ifndef __PLUMED_crystallization_LocalSteinhardt_h
+#define __PLUMED_crystallization_LocalSteinhardt_h
+#include "OrientationSphere.h"
+
+namespace PLMD {
+namespace crystallization {
+
+template<class T>
+class LocalSteinhardt : public OrientationSphere {
+public:
+  static void registerKeywords( Keywords& keys ){
+    OrientationSphere::registerKeywords(keys);
+  }
+  LocalSteinhardt(const ActionOptions& ao): Action(ao), OrientationSphere(ao)
+  {
+     T* mc=dynamic_cast<T*>( getBaseMultiColvar(0) );
+     if(!mc) error("input action is not calculating the correct vectors");
+  }
+};
+
+}
+}
+#endif
diff --git a/src/crystallization/Makefile b/src/crystallization/Makefile
new file mode 100644
index 000000000..f68246671
--- /dev/null
+++ b/src/crystallization/Makefile
@@ -0,0 +1,4 @@
+USE=core tools vesselbase multicolvar
+
+# generic makefile
+include ../maketools/make.module
diff --git a/src/crystallization/MoleculeOrientation.cpp b/src/crystallization/MoleculeOrientation.cpp
new file mode 100644
index 000000000..26e0d985b
--- /dev/null
+++ b/src/crystallization/MoleculeOrientation.cpp
@@ -0,0 +1,115 @@
+/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+   Copyright (c) 2012 The plumed team
+   (see the PEOPLE file at the root of the distribution for a list of names)
+
+   See http://www.plumed-code.org for more information.
+
+   This file is part of plumed, version 2.0.
+
+   plumed is free software: you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   plumed is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with plumed.  If not, see <http://www.gnu.org/licenses/>.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
+#include "core/ActionRegister.h"
+#include "VectorMultiColvar.h"
+
+namespace PLMD {
+namespace crystallization {
+
+//+PLUMEDOC MCOLVAR MOLECULES
+/*
+Calculate the vectors connecting a pair of atoms in order to represent the orientation of a molecule.
+
+At its simplest this command can be used to calculate the average length of an internal vector in a 
+collection of different molecules.  When used in conjunction with MutiColvarFunctions in can be used
+to do a variety of more complex tasks.
+
+\par Examples
+
+The following input tells plumed to calculate the distances between two of the atoms in a molecule.
+This is done for the same set of atoms four different molecules and the average separation is then
+calculated.
+
+\verbatim
+MOLECULES MOL1=1,2 MOL2=3,4 MOL3=5,6 MOL4=7,8 MEAN LABEL=mm
+PRINT ARG=mm.mean FILE=colvar
+\endverbatim
+
+
+*/
+//+ENDPLUMEDOC
+
+
+class MoleculeOrientation : public VectorMultiColvar {
+private:
+public:
+  static void registerKeywords( Keywords& keys );
+  MoleculeOrientation( const ActionOptions& ao );
+  void calculateVector();
+  Vector getCentralAtom();
+};
+
+PLUMED_REGISTER_ACTION(MoleculeOrientation,"MOLECULES")
+
+void MoleculeOrientation::registerKeywords( Keywords& keys ){
+  VectorMultiColvar::registerKeywords( keys ); keys.use("MEAN");
+  keys.add("numbered","MOL","The numerical indices of the atoms in the molecule. The orientation of the molecule is equal to " 
+                            "the vector connecting the first two atoms specified.  If a third atom is specified its position "
+                            "is used to specify where the molecule is.  If a third atom is not present the molecule is assumed "
+                            "to be at the center of the vector connecting the first two atoms.");
+  keys.reset_style("MOL","atoms");
+}
+
+MoleculeOrientation::MoleculeOrientation( const ActionOptions& ao ):
+Action(ao),
+VectorMultiColvar(ao)
+{
+  int natoms=-1; 
+  readAtomsLikeKeyword("MOL",natoms); 
+  if( natoms!=2 && natoms!=3 ) error("number of atoms in molecule specification is wrong.  Should be two or three.");
+  setVectorDimensionality( 3, false, natoms );
+}
+
+void MoleculeOrientation::calculateVector(){
+  Vector distance; distance=getSeparation( getPosition(0), getPosition(1) );
+
+  addAtomsDerivative( 0, 0, Vector(-1.0,0,0) ); 
+  addAtomsDerivative( 0, 1, Vector(+1.0,0,0) ); 
+  addBoxDerivatives( 0, Tensor(distance,Vector(-1.0,0,0)) ); 
+  addComponent( 0, distance[0] ); 
+
+  addAtomsDerivative( 1, 0, Vector(0,-1.0,0) ); 
+  addAtomsDerivative( 1, 1, Vector(0,+1.0,0) ); 
+  addBoxDerivatives( 1, Tensor(distance,Vector(0,-1.0,0)) ); 
+  addComponent( 1, distance[1] ); 
+
+  addAtomsDerivative( 2, 0, Vector(0,0,-1.0) ); 
+  addAtomsDerivative( 2, 1, Vector(0,0,+1.0) ); 
+  addBoxDerivatives( 2, Tensor(distance,Vector(0,0,-1.0)) ); 
+  addComponent( 2, distance[2] ); 
+}
+
+Vector MoleculeOrientation::getCentralAtom(){
+  if( getNAtoms()==2 ){
+      Vector com; com.zero();
+      com+=0.5*getPosition(0);
+      com+=0.5*getPosition(1);
+      addCentralAtomDerivatives( 0, 0.5*Tensor::identity() );
+      addCentralAtomDerivatives( 1, 0.5*Tensor::identity() );
+      return com;
+  } 
+  addCentralAtomDerivatives( 2, Tensor::identity() );
+  return getPosition(2);
+}
+
+}
+}
diff --git a/src/crystallization/OrientationSphere.cpp b/src/crystallization/OrientationSphere.cpp
new file mode 100644
index 000000000..1a2d40432
--- /dev/null
+++ b/src/crystallization/OrientationSphere.cpp
@@ -0,0 +1,138 @@
+/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+   Copyright (c) 2012 The plumed team
+   (see the PEOPLE file at the root of the distribution for a list of names)
+
+   See http://www.plumed-code.org for more information.
+
+   This file is part of plumed, version 2.0.
+
+   plumed is free software: you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   plumed is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with plumed.  If not, see <http://www.gnu.org/licenses/>.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
+#include "VectorMultiColvar.h"
+#include "OrientationSphere.h"
+
+using namespace std;
+
+namespace PLMD{
+namespace crystallization {
+
+void OrientationSphere::registerKeywords( Keywords& keys ){
+  multicolvar::MultiColvarFunction::registerKeywords( keys );
+  keys.add("compulsory","NN","6","The n parameter of the switching function ");
+  keys.add("compulsory","MM","12","The m parameter of the switching function ");
+  keys.add("compulsory","D_0","0.0","The d_0 parameter of the switching function");
+  keys.add("compulsory","R_0","The r_0 parameter of the switching function");
+  keys.add("optional","SWITCH","This keyword is used if you want to employ an alternative to the continuous swiching function defined above. "
+                               "The following provides information on the \\ref switchingfunction that are available. "
+                               "When this keyword is present you no longer need the NN, MM, D_0 and R_0 keywords.");
+  // Use actionWithDistributionKeywords
+  keys.use("MEAN"); keys.use("MORE_THAN"); keys.use("LESS_THAN"); 
+  keys.use("MIN"); keys.use("BETWEEN"); keys.use("HISTOGRAM"); keys.use("MOMENTS");
+}
+
+OrientationSphere::OrientationSphere(const ActionOptions&ao):
+Action(ao),
+MultiColvarFunction(ao)
+{
+  // Resize everything that stores a vector now that we know the 
+  // number of components
+  unsigned ncomponents=getBaseMultiColvar(0)->getNumberOfQuantities() - 5;
+  catom_orient.resize( ncomponents ); 
+  catom_der.resize( ncomponents );
+  this_orient.resize( ncomponents ); 
+
+  // Weight of this does not have derivatives
+  weightHasDerivatives=false;
+  // Read in the switching function
+  std::string sw, errors; parse("SWITCH",sw);
+  if(sw.length()>0){
+     switchingFunction.set(sw,errors);
+  } else { 
+     double r_0=-1.0, d_0; int nn, mm;
+     parse("NN",nn); parse("MM",mm);
+     parse("R_0",r_0); parse("D_0",d_0);
+     if( r_0<0.0 ) error("you must set a value for R_0");
+     switchingFunction.set(nn,mm,r_0,d_0);
+  }
+  log.printf("  degree of overlap in orientation between central molecule and those within %s\n",( switchingFunction.description() ).c_str() );
+
+  // Finish the setup of the object
+  buildSymmetryFunctionLists( true );
+
+  // And check everything has been read in correctly
+  checkRead();
+}
+
+void OrientationSphere::calculateWeight(){
+  weightHasDerivatives=true;   // The weight has no derivatives really
+  setElementValue(1,1.0);
+} 
+
+double OrientationSphere::compute(){
+   // Make sure derivatives for central atom are only calculated once
+   VectorMultiColvar* vv = dynamic_cast<VectorMultiColvar*>( getBaseMultiColvar(0) );
+   vv->firstcall=true;
+
+   weightHasDerivatives=true;   // The weight has no derivatives really
+   double sw, value=0, denom=0, dot, f_dot, dot_df, dfunc; Vector distance;
+
+   getValueForBaseTask(0, catom_orient );
+   for(unsigned i=1;i<getNAtoms();++i){
+      distance=getSeparation( getPositionOfCentralAtom(0), getPositionOfCentralAtom(i) );
+      sw = switchingFunction.calculate( distance.modulo(), dfunc );
+      if( sw>=getTolerance() ){    
+         getValueForBaseTask( i, this_orient );
+         // Calculate the dot product wrt to this position 
+         dot=0; for(unsigned k=0;k<catom_orient.size();++k) dot+=catom_orient[k]*this_orient[k];  
+         f_dot = transformDotProduct( dot, dot_df ); 
+         // N.B. We are assuming here that the imaginary part of the dot product is zero
+         for(unsigned k=0;k<catom_orient.size();++k){
+            this_orient[k]*=sw*dot_df; catom_der[k]=sw*dot_df*catom_orient[k];
+         }  
+
+         // Set the derivatives wrt of the numerator
+         addOrientationDerivatives( 0, this_orient ); 
+         addOrientationDerivatives( i, catom_der );  
+         addCentralAtomsDerivatives( 0, 0, f_dot*(-dfunc)*distance );
+         addCentralAtomsDerivatives( i, 0, f_dot*(dfunc)*distance );
+         addBoxDerivatives( f_dot*(-dfunc)*Tensor(distance,distance) );
+         value += sw*f_dot;
+         // Set the derivatives wrt to the numerator
+         addCentralAtomsDerivatives( 0, 1, (-dfunc)*distance );
+         addCentralAtomsDerivatives( i, 1, (dfunc)*distance );
+         addBoxDerivativesOfWeight( (-dfunc)*Tensor(distance,distance) );
+         denom += sw;
+      } else {
+         removeAtomRequest( i, sw );   
+      }
+   }
+   
+   // Now divide everything
+   unsigned nder = getNumberOfDerivatives();
+   for(unsigned i=0;i<nder;++i){
+      setElementDerivative( i, getElementDerivative(i)/denom - (value*getElementDerivative(nder+i))/(denom*denom) );  
+      setElementDerivative( nder + i, 0.0 );
+   }
+   weightHasDerivatives=false;   // Weight has no derivatives we just use the holder for weight to store some stuff
+   return value / denom;
+}
+
+Vector OrientationSphere::getCentralAtom(){
+   addDerivativeOfCentralAtomPos( 0, Tensor::identity() );
+   return getPositionOfCentralAtom(0);
+}
+
+}
+}
+
diff --git a/src/crystallization/OrientationSphere.h b/src/crystallization/OrientationSphere.h
new file mode 100644
index 000000000..fc0ade9b8
--- /dev/null
+++ b/src/crystallization/OrientationSphere.h
@@ -0,0 +1,56 @@
+/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+   Copyright (c) 2012 The plumed team
+   (see the PEOPLE file at the root of the distribution for a list of names)
+
+   See http://www.plumed-code.org for more information.
+
+   This file is part of plumed, version 2.0.
+
+   plumed is free software: you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   plumed is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with plumed.  If not, see <http://www.gnu.org/licenses/>.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
+#ifndef __PLUMED_crystallization_OrientationSphere_h
+#define __PLUMED_crystallization_OrientationSphere_h
+
+#include "multicolvar/MultiColvarFunction.h"
+#include "tools/SwitchingFunction.h"
+
+#include <string>
+#include <cmath> 
+
+namespace PLMD {
+namespace crystallization {
+
+class OrientationSphere : public multicolvar::MultiColvarFunction {
+private:
+  std::vector<double> catom_orient, catom_der, this_orient;
+  std::vector<double> catom_iorient, catom_ider, this_iorient;
+  SwitchingFunction switchingFunction;
+public:
+  static void registerKeywords( Keywords& keys );
+  OrientationSphere(const ActionOptions&);
+  double compute();
+  void calculateWeight();
+  virtual double transformDotProduct( const double& dot, double& df );
+  Vector getCentralAtom();  
+  bool isPeriodic(){ return false; }
+};
+
+inline
+double OrientationSphere::transformDotProduct( const double& dot, double& df ){
+  df=1.0; return dot;
+}
+
+}
+}
+#endif
diff --git a/src/crystallization/Q4.cpp b/src/crystallization/Q4.cpp
new file mode 100644
index 000000000..17ec0189d
--- /dev/null
+++ b/src/crystallization/Q4.cpp
@@ -0,0 +1,82 @@
+/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+   Copyright (c) 2012 The plumed team
+   (see the PEOPLE file at the root of the distribution for a list of names)
+
+   See http://www.plumed-code.org for more information.
+
+   This file is part of plumed, version 2.0.
+
+   plumed is free software: you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   plumed is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with plumed.  If not, see <http://www.gnu.org/licenses/>.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
+#include "Steinhardt.h"
+#include "LocalSteinhardt.h" 
+#include "core/ActionRegister.h"
+
+//+PLUMEDOC MCOLVAR Q4
+/*
+Calculate 4th order Steinhardt parameters.
+
+\par Examples
+
+*/
+//+ENDPLUMEDOC
+
+//+PLUMEDOC MCOLVARF LOCAL_Q4
+/*
+Calculate 4th order Steinhardt parameters.
+
+\par Examples
+
+*/
+//+ENDPLUMEDOC
+
+namespace PLMD {
+namespace crystallization {
+
+class Q4 : public Steinhardt {
+public:
+  static void registerKeywords( Keywords& keys );
+  Q4( const ActionOptions& ao );
+};
+
+PLUMED_REGISTER_ACTION(Q4,"Q4")
+typedef LocalSteinhardt<Q4> LOCAL_Q4;
+PLUMED_REGISTER_ACTION(LOCAL_Q4,"LOCAL_Q4")
+
+void Q4::registerKeywords( Keywords& keys ){
+  Steinhardt::registerKeywords( keys );
+}
+
+Q4::Q4(const ActionOptions& ao ):
+Action(ao),
+Steinhardt(ao)
+{
+  setAngularMomentum(4);
+
+  normaliz.resize( 5 );
+  normaliz[0] = sqrt( ( 9.0*24.0 ) / (4.0*pi*24.0) );
+  normaliz[1] = -sqrt( ( 9.0*6.0 ) / (4.0*pi*120.0) );
+  normaliz[2] = sqrt( ( 9.0*2.0) / (4.0*pi*720.0) );
+  normaliz[3] = -sqrt( ( 9.0*1) / (4.0*pi*5040.0) );
+  normaliz[4] = sqrt( (9.0*1) / (4.0*pi*40320.0) );
+
+  coeff_poly.resize( 5 ); 
+  coeff_poly[0]=0.375; coeff_poly[1]=0.0;
+  coeff_poly[2]=-3.75; coeff_poly[3]=0.0;
+  coeff_poly[4]=4.375; 
+}
+
+}
+}
+
diff --git a/src/crystallization/Q6.cpp b/src/crystallization/Q6.cpp
new file mode 100644
index 000000000..1ac7d55cd
--- /dev/null
+++ b/src/crystallization/Q6.cpp
@@ -0,0 +1,85 @@
+/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+   Copyright (c) 2012 The plumed team
+   (see the PEOPLE file at the root of the distribution for a list of names)
+
+   See http://www.plumed-code.org for more information.
+
+   This file is part of plumed, version 2.0.
+
+   plumed is free software: you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   plumed is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with plumed.  If not, see <http://www.gnu.org/licenses/>.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
+#include "Steinhardt.h"
+#include "LocalSteinhardt.h"
+#include "core/ActionRegister.h"
+
+//+PLUMEDOC MCOLVAR Q6
+/*
+Calculate 6th order Steinhardt parameters.
+
+\par Examples
+
+*/
+//+ENDPLUMEDOC
+
+//+PLUMEDOC MCOLVARF LOCAL_Q6
+/*
+Calculate 4th order Steinhardt parameters.
+
+\par Examples
+
+*/
+//+ENDPLUMEDOC
+
+namespace PLMD {
+namespace crystallization {
+
+class Q6 : public Steinhardt {
+public:
+  static void registerKeywords( Keywords& keys );
+  Q6( const ActionOptions& ao );
+};
+
+PLUMED_REGISTER_ACTION(Q6,"Q6")
+typedef LocalSteinhardt<Q6> LOCAL_Q6;
+PLUMED_REGISTER_ACTION(LOCAL_Q6,"LOCAL_Q6")
+
+void Q6::registerKeywords( Keywords& keys ){
+  Steinhardt::registerKeywords( keys );
+}
+
+Q6::Q6(const ActionOptions& ao ):
+Action(ao),
+Steinhardt(ao)
+{
+  setAngularMomentum(6);
+
+  normaliz.resize( 7 );
+  normaliz[0] = sqrt( ( 13.0*720.0 ) / (4.0*pi*720.0) );
+  normaliz[1] = -sqrt( ( 13.0*120.0 ) / (4.0*pi*5040) );
+  normaliz[2] = sqrt( ( 13.0*24) / (4.0*pi*40320) );
+  normaliz[3] = -sqrt( ( 13.0*6) / (4.0*pi*362880) );
+  normaliz[4] = sqrt( (13.0*2) / (4.0*pi*3628800) );
+  normaliz[5] = -sqrt( (13.0*1) / (4.0*pi*39916800) );
+  normaliz[6] = sqrt( (13.0*1) / (4.0*pi*479001600) );
+
+  coeff_poly.resize( 7 ); 
+  coeff_poly[0]=-0.3125; coeff_poly[1]=0.0;
+  coeff_poly[2]=6.5625; coeff_poly[3]=0.0;
+  coeff_poly[4]=-19.6875; coeff_poly[5]=0.0;
+  coeff_poly[6]=14.4375; 
+}
+
+}
+}
+
diff --git a/src/crystallization/Steinhardt.cpp b/src/crystallization/Steinhardt.cpp
new file mode 100644
index 000000000..68412fd04
--- /dev/null
+++ b/src/crystallization/Steinhardt.cpp
@@ -0,0 +1,186 @@
+/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+   Copyright (c) 2012 The plumed team
+   (see the PEOPLE file at the root of the distribution for a list of names)
+
+   See http://www.plumed-code.org for more information.
+
+   This file is part of plumed, version 2.0.
+
+   plumed is free software: you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   plumed is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with plumed.  If not, see <http://www.gnu.org/licenses/>.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
+#include <complex>
+#include "Steinhardt.h"
+
+namespace PLMD {
+namespace crystallization {
+
+void Steinhardt::registerKeywords( Keywords& keys ){
+  VectorMultiColvar::registerKeywords( keys ); 
+  keys.add("compulsory","NN","12","The n parameter of the switching function ");
+  keys.add("compulsory","MM","24","The m parameter of the switching function ");
+  keys.add("compulsory","D_0","0.0","The d_0 parameter of the switching function");
+  keys.add("compulsory","R_0","The r_0 parameter of the switching function");
+  keys.add("optional","SWITCH","This keyword is used if you want to employ an alternative to the continuous swiching function defined above. "
+                               "The following provides information on the \\ref switchingfunction that are available. "
+                               "When this keyword is present you no longer need the NN, MM, D_0 and R_0 keywords.");
+  keys.use("SPECIES"); keys.use("SPECIESA"); keys.use("SPECIESB");
+  keys.use("MEAN"); keys.use("LESS_THAN"); keys.use("MORE_THAN");
+  keys.use("BETWEEN"); keys.use("HISTOGRAM"); keys.use("MOMENTS"); keys.use("MIN");
+}
+
+Steinhardt::Steinhardt( const ActionOptions& ao ):
+Action(ao),
+VectorMultiColvar(ao)
+{
+  // Read in the switching function
+  std::string sw, errors; parse("SWITCH",sw);
+  if(sw.length()>0){
+     switchingFunction.set(sw,errors);
+  } else {
+     double r_0=-1.0, d_0; int nn, mm;
+     parse("NN",nn); parse("MM",mm);
+     parse("R_0",r_0); parse("D_0",d_0);
+     if( r_0<0.0 ) error("you must set a value for R_0");
+     switchingFunction.set(nn,mm,r_0,d_0);
+  }
+  log.printf("  Steinhardt parameter of central atom and those within %s\n",( switchingFunction.description() ).c_str() );
+}
+
+void Steinhardt::setAngularMomentum( const unsigned& ang ){
+  tmom=ang; setVectorDimensionality( 2*ang + 1, true, 2 );
+} 
+
+void Steinhardt::calculateVector(){
+  double dfunc, dpoly_ass, md, tq6, itq6, real_z, imag_z; 
+  Vector distance, dz, myrealvec, myimagvec, real_dz, imag_dz;
+  // The square root of -1
+  std::complex<double> ii( 0.0, 1.0 ), dp_x, dp_y, dp_z;
+
+  double sw, poly_ass, dlen, nbond=0.0; std::complex<double> powered;
+  for(unsigned i=1;i<getNAtoms();++i){
+     distance=getSeparation( getPosition(0), getPosition(i) );
+     dlen=distance.modulo(); sw = switchingFunction.calculate( dlen, dfunc );
+     if( sw>=getTolerance() ){   
+         nbond += sw;  // Accumulate total number of bonds
+         double dlen3 = dlen*dlen*dlen;
+
+         // Store derivatives of weight
+         MultiColvarBase::addAtomsDerivatives( 0, getAtomIndex(0), (-dfunc)*distance );
+         MultiColvarBase::addAtomsDerivatives( 0, getAtomIndex(i), (+dfunc)*distance );
+         MultiColvarBase::addBoxDerivatives( 0, (-dfunc)*Tensor( distance,distance ) ); 
+
+         // Do stuff for m=0
+         poly_ass=deriv_poly( 0, distance[2]/dlen, dpoly_ass );
+         // Derivatives of z/r wrt x, y, z
+         dz = -( distance[2] / dlen3 )*distance; dz[2] += (1.0 / dlen);
+         // Derivative wrt to the vector connecting the two atoms
+         myrealvec = (+sw)*dpoly_ass*dz + poly_ass*(+dfunc)*distance;
+         // Accumulate the derivatives
+         addAtomsDerivative( tmom, 0, -myrealvec );      
+         addAtomsDerivative( tmom, i, myrealvec ); 
+         addBoxDerivatives( tmom, Tensor( -myrealvec,distance ) );
+         // And store the vector function
+         addComponent( tmom, sw*poly_ass );
+
+         // The complex number of which we have to take powers
+         std::complex<double> com1( distance[0]/dlen ,distance[1]/dlen );
+
+         // Do stuff for all other m values
+         for(unsigned m=1;m<=tmom;++m){
+             // Calculate Legendre Polynomial
+             poly_ass=deriv_poly( m, distance[2]/dlen, dpoly_ass );
+             // Calculate powe of complex number
+             powered=pow(com1,m-1); md=static_cast<double>(m);
+             // Real and imaginary parts of z
+             real_z = real(com1*powered); imag_z = imag(com1*powered );
+ 
+             // Calculate steinhardt parameter
+             tq6=poly_ass*real_z;   // Real part of steinhardt parameter
+             itq6=poly_ass*imag_z;  // Imaginary part of steinhardt parameter
+
+             // Derivatives wrt ( x/r + iy )^m
+             dp_x = md*powered*( (1.0/dlen)-(distance[0]*distance[0])/dlen3-ii*(distance[0]*distance[1])/dlen3 );
+             dp_y = md*powered*( ii*(1.0/dlen)-(distance[0]*distance[1])/dlen3-ii*(distance[1]*distance[1])/dlen3 );
+             dp_z = md*powered*( -(distance[0]*distance[2])/dlen3-ii*(distance[1]*distance[2])/dlen3 );
+
+             // Derivatives of real and imaginary parts of above
+             real_dz[0] = real( dp_x ); real_dz[1] = real( dp_y ); real_dz[2] = real( dp_z );
+             imag_dz[0] = imag( dp_x ); imag_dz[1] = imag( dp_y ); imag_dz[2] = imag( dp_z );  
+
+             // Complete derivative of steinhardt parameter
+             myrealvec = (+sw)*dpoly_ass*real_z*dz + (+dfunc)*distance*tq6 + (+sw)*poly_ass*real_dz; 
+             myimagvec = (+sw)*dpoly_ass*imag_z*dz + (+dfunc)*distance*itq6 + (+sw)*poly_ass*imag_dz;
+
+             // Real part
+             addComponent( tmom+m, sw*tq6 );
+             addAtomsDerivative( tmom+m, 0, -myrealvec );
+             addAtomsDerivative( tmom+m, i, myrealvec );
+             addBoxDerivatives( tmom+m, Tensor( -myrealvec,distance ) );
+             // Imaginary part 
+             addImaginaryComponent( tmom+m, sw*itq6 );
+             addImaginaryAtomsDerivative( tmom+m, 0, -myimagvec );
+             addImaginaryAtomsDerivative( tmom+m, i, myimagvec );
+             addImaginaryBoxDerivatives( tmom+m, Tensor( -myimagvec,distance ) );
+             // Store -m part of vector
+             double pref=pow(-1.0,m); 
+             // -m part of vector is just +m part multiplied by (-1.0)**m and multiplied by complex
+             // conjugate of Legendre polynomial
+             // Real part
+             addComponent( tmom-m, pref*sw*tq6 );
+             addAtomsDerivative( tmom-m, 0, -pref*myrealvec );
+             addAtomsDerivative( tmom-m, i, pref*myrealvec );
+             addBoxDerivatives( tmom-m, pref*Tensor( -myrealvec,distance ) );
+             // Imaginary part
+             addImaginaryComponent( tmom-m, -pref*sw*itq6 );
+             addImaginaryAtomsDerivative( tmom-m, 0, pref*myimagvec );
+             addImaginaryAtomsDerivative( tmom-m, i, -pref*myimagvec );
+             addImaginaryBoxDerivatives( tmom-m, pref*Tensor( myimagvec,distance ) );
+         }
+     } else {
+         removeAtomRequest( i, sw );
+     }
+  } 
+
+  // Normalize 
+  setElementValue(0, nbond ); updateActiveAtoms();
+  for(unsigned i=0;i<2*getNumberOfComponentsInVector();++i) quotientRule( 5+i, 0, 5+i ); 
+  // Clear tempory stuff
+  clearDerivativesAfterTask(0);
+}
+
+double Steinhardt::deriv_poly( const unsigned& m, const double& val, double& df ){
+  double fact=1.0;
+  for(unsigned j=1;j<=m;++j) fact=fact*j;
+  double res=coeff_poly[m]*fact;
+
+  double pow=1.0, xi=val, dxi=1.0; df=0.0;
+  for(int i=m+1;i<=tmom;++i){
+      double fact=1.0;
+      for(unsigned j=i-m+1;j<=i;++j) fact=fact*j;
+      res=res+coeff_poly[i]*fact*xi;
+      df = df + pow*coeff_poly[i]*fact*dxi;
+      xi=xi*val; dxi=dxi*val; pow+=1.0;
+  }
+  df = df*normaliz[m];
+  return normaliz[m]*res;
+}
+
+Vector Steinhardt::getCentralAtom(){
+  addCentralAtomDerivatives( 0, Tensor::identity() );
+  return getPosition(0);
+
+}
+
+}
+}
diff --git a/src/crystallization/Steinhardt.h b/src/crystallization/Steinhardt.h
new file mode 100644
index 000000000..b62d90e8a
--- /dev/null
+++ b/src/crystallization/Steinhardt.h
@@ -0,0 +1,50 @@
+/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+   Copyright (c) 2012 The plumed team
+   (see the PEOPLE file at the root of the distribution for a list of names)
+
+   See http://www.plumed-code.org for more information.
+
+   This file is part of plumed, version 2.0.
+
+   plumed is free software: you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   plumed is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with plumed.  If not, see <http://www.gnu.org/licenses/>.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
+#ifndef __PLUMED_crystallization_Steinhardt_h
+#define __PLUMED_crystallization_Steinhardt_h
+
+#include <complex>
+#include "tools/SwitchingFunction.h"
+#include "VectorMultiColvar.h"
+
+namespace PLMD {
+namespace crystallization {
+
+class Steinhardt : public VectorMultiColvar {
+private:
+  unsigned tmom;
+  SwitchingFunction switchingFunction;
+protected:
+  std::vector<double> coeff_poly;
+  std::vector<double> normaliz;
+  void setAngularMomentum( const unsigned& ang );
+public:
+  static void registerKeywords( Keywords& keys );
+  Steinhardt( const ActionOptions& ao );
+  void calculateVector();
+  Vector getCentralAtom();
+  double deriv_poly( const unsigned&, const double&, double& );
+};
+
+}
+}
+#endif
diff --git a/src/crystallization/StoreVectorsVessel.cpp b/src/crystallization/StoreVectorsVessel.cpp
new file mode 100644
index 000000000..64fbff836
--- /dev/null
+++ b/src/crystallization/StoreVectorsVessel.cpp
@@ -0,0 +1,149 @@
+/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+   Copyright (c) 2012 The plumed team
+   (see the PEOPLE file at the root of the distribution for a list of names)
+
+   See http://www.plumed-code.org for more information.
+
+   This file is part of plumed, version 2.0.
+
+   plumed is free software: you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   plumed is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with plumed.  If not, see <http://www.gnu.org/licenses/>.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
+#include "vesselbase/VesselRegister.h"
+#include "vesselbase/ActionWithVessel.h"
+#include "multicolvar/MultiColvarFunction.h"
+#include "StoreVectorsVessel.h"
+#include "VectorMultiColvar.h"
+
+namespace PLMD {
+namespace crystallization{
+
+void StoreVectorsVessel::registerKeywords( Keywords& keys ){
+  vesselbase::StoreDataVessel::registerKeywords(keys);
+}
+
+StoreVectorsVessel::StoreVectorsVessel( const vesselbase::VesselOptions& da ):
+StoreDataVessel(da),
+store_director(false)
+{
+  vecs=dynamic_cast<VectorMultiColvar*>( getAction() );
+  plumed_assert( vecs );
+  if( vecs->complexvec ) ncomponents=2*vecs->ncomponents;  
+  else ncomponents = vecs->ncomponents;   
+
+  completeSetup( 5, ncomponents ); myfvec.resize( ncomponents );
+}
+
+void StoreVectorsVessel::usedInFunction( const bool& store ){
+  store_director=store; resize();
+}
+
+void StoreVectorsVessel::recompute( const unsigned& ivec, const unsigned& jstore ){
+  plumed_dbg_assert( usingLowMem() ); 
+  // Set the task we want to reperform
+  setTaskToRecompute( ivec );
+  // Reperform the task
+  vecs->performTask();
+  // Store the derivatives
+  storeDerivativesLowMem( jstore );
+  // Normalize the vector if it is required
+  if( store_director ) normalizeVector( jstore ); 
+  // Clear up afterwards
+  vecs->clearAfterTask();
+
+}
+
+bool StoreVectorsVessel::calculate(){
+  storeValues( vecs->getCurrentPositionInTaskList() );  // Store the values of the components of the vector
+
+  if(!store_director) return true;
+  if( !usingLowMem() ) normalizeVector( vecs->getCurrentPositionInTaskList() );
+  else normalizeVector( -1 );  // Ensures vector components are normalized 
+  return true;
+}
+
+void StoreVectorsVessel::normalizeVector( const int& jstore ){
+  unsigned myelem = vecs->getCurrentPositionInTaskList();
+  bool lowmemory = usingLowMem(); double norm2=0.0, norm;
+  
+  if( (lowmemory && jstore<0) || !lowmemory ){
+     for(unsigned icomp=0;icomp<ncomponents;++icomp) norm2 += getComponent( myelem, icomp ) * getComponent( myelem, icomp );
+     norm=sqrt( norm2 ); 
+     for(unsigned icomp=0;icomp<ncomponents;++icomp){
+        myfvec[icomp]=getComponent( myelem, icomp );      
+        setComponent( myelem, icomp, getComponent( myelem, icomp ) / norm );
+     }
+  } else {
+     for(unsigned icomp=0;icomp<ncomponents;++icomp){
+        myfvec[icomp] = vecs->getElementValue( 5+icomp ); norm2 += myfvec[icomp] * myfvec[icomp];
+     }
+     norm=sqrt( norm2 );
+  }
+  double norm3=norm2*norm, weight = 1.0 / norm, wdf = -1.0 / norm3;
+
+  if( !lowmemory ) {
+      plumed_dbg_assert( jstore<getAction()->getFullNumberOfTasks() );
+      for(unsigned ider=0;ider<getNumberOfDerivatives(myelem);++ider){
+          double comp2=0.0; unsigned ibuf = myelem * ncomponents * getNumberOfDerivativeSpacesPerComponent() + 1 + ider;
+          for(unsigned jcomp=0;jcomp<ncomponents;++jcomp){
+              comp2  += myfvec[jcomp]*getBufferElement(ibuf);
+              ibuf += getNumberOfDerivativeSpacesPerComponent();
+          }
+          ibuf = myelem * ncomponents * getNumberOfDerivativeSpacesPerComponent() + 1 + ider;
+          for(unsigned jcomp=0;jcomp<ncomponents;++jcomp){
+             setBufferElement( ibuf, weight*getBufferElement(ibuf) + wdf*comp2*myfvec[jcomp] );
+             ibuf += getNumberOfDerivativeSpacesPerComponent();
+          }
+      }
+  } else if( jstore>0 ) {
+      unsigned maxder = vecs->getNumberOfDerivatives();
+      for(unsigned ider=0;ider<getNumberOfDerivatives(jstore);++ider){
+          double comp2=0.0; unsigned ibuf = jstore * ncomponents * maxder + ider;
+          for(unsigned jcomp=0;jcomp<ncomponents;++jcomp){
+              comp2 += myfvec[jcomp]*getLocalDerivative( ibuf );    
+              ibuf += maxder;
+          }
+          ibuf = jstore * ncomponents * maxder + ider;
+          for(unsigned jcomp=0;jcomp<ncomponents;++jcomp){
+             setLocalDerivative( ibuf,  weight*getLocalDerivative( ibuf ) + wdf*comp2*myfvec[jcomp] ); 
+             ibuf += maxder;
+          }
+      }
+  }
+}
+
+void StoreVectorsVessel::chainRuleForComponent( const unsigned& icolv, const unsigned& jin, const unsigned& jout, const unsigned& base_cv_no, 
+                                                const double& weight, multicolvar::MultiColvarFunction* funcout ){
+  if( usingLowMem() ){
+     unsigned ibuf = ( icolv*ncomponents + jin ) * getAction()->getNumberOfDerivatives();
+     for(unsigned ider=0;ider<getNumberOfDerivatives(icolv);++ider){
+         funcout->addStoredDerivative( jout, base_cv_no, getStoredIndex( icolv, ider ), weight*getLocalDerivative(ibuf+ider) );
+     }                                         
+  } else {
+     unsigned ibuf = (icolv*ncomponents + jin ) * getNumberOfDerivativeSpacesPerComponent() + 1;
+     for(unsigned ider=0;ider<getNumberOfDerivatives(icolv);++ider){
+         funcout->addStoredDerivative( jout, base_cv_no, getStoredIndex( icolv, ider ), weight*getBufferElement(ibuf+ider) );
+     }   
+  }  
+}
+
+void StoreVectorsVessel::chainRuleForVector( const unsigned& icolv, const unsigned& jout, const unsigned& base_cv_no, 
+                                             const std::vector<double>& df, multicolvar::MultiColvarFunction* funcout ){ 
+   chainRule( icolv, df );
+   for(unsigned ider=0;ider<getNumberOfDerivatives(icolv);++ider){
+       funcout->addStoredDerivative( jout, base_cv_no, getStoredIndex( icolv, ider ), getFinalDerivative(ider) );
+   }
+}
+
+}
+}
diff --git a/src/crystallization/StoreVectorsVessel.h b/src/crystallization/StoreVectorsVessel.h
new file mode 100644
index 000000000..ba523fbbc
--- /dev/null
+++ b/src/crystallization/StoreVectorsVessel.h
@@ -0,0 +1,76 @@
+/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+   Copyright (c) 2012 The plumed team
+   (see the PEOPLE file at the root of the distribution for a list of names)
+
+   See http://www.plumed-code.org for more information.
+
+   This file is part of plumed, version 2.0.
+
+   plumed is free software: you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   plumed is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with plumed.  If not, see <http://www.gnu.org/licenses/>.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
+#ifndef __PLUMED_crystallization_StoreVectorsVessel_h
+#define __PLUMED_crystallization_StoreVectorsVessel_h
+
+#include "tools/DynamicList.h"
+#include "vesselbase/StoreDataVessel.h" 
+
+namespace PLMD {
+
+class multicolvar::MultiColvarFunction;
+
+namespace crystallization {
+
+class VectorMultiColvar;
+
+class StoreVectorsVessel : public vesselbase::StoreDataVessel {
+friend class VectorMultiColvar;
+private:
+/// We want to store the director rather than the value
+  bool store_director; 
+  unsigned ncomponents;
+  std::vector<double> myfvec;
+  VectorMultiColvar* vecs;
+  void normalizeVector( const int& );
+public:
+  static void registerKeywords( Keywords& keys );
+/// Constructor
+  StoreVectorsVessel( const vesselbase::VesselOptions& );
+/// This turns on the full use of this action for storage
+  void usedInFunction( const bool& );
+/// This makes sure vectors are normalized (they are already stored)
+  bool calculate();
+/// This reperforms a calculation
+  void recompute( const unsigned& , const unsigned& );
+/// This does nothing
+  std::string description(){ return ""; }
+/// Get the orientation of the ith vector
+  void getVector( const unsigned& , std::vector<double>& );
+/// Chain rule for component
+  void chainRuleForComponent( const unsigned& , const unsigned& , const unsigned& jout, const unsigned& , const double& , multicolvar::MultiColvarFunction* );
+/// Chain rule for whole vector
+  void chainRuleForVector( const unsigned& , const unsigned& , const unsigned& , const std::vector<double>& , multicolvar::MultiColvarFunction* );
+};
+
+inline
+void StoreVectorsVessel::getVector( const unsigned& imol, std::vector<double>& vec ){
+  plumed_dbg_assert( vec.size()==getNumberOfComponents() );
+  for(unsigned i=0;i<getNumberOfComponents();++i) vec[i]=getComponent( imol, i );
+}
+
+
+
+}
+}
+#endif
+
diff --git a/src/crystallization/VectorAverage.cpp b/src/crystallization/VectorAverage.cpp
new file mode 100644
index 000000000..d1cf40072
--- /dev/null
+++ b/src/crystallization/VectorAverage.cpp
@@ -0,0 +1,162 @@
+/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+   Copyright (c) 2012 The plumed team
+   (see the PEOPLE file at the root of the distribution for a list of names)
+
+   See http://www.plumed-code.org for more information.
+
+   This file is part of plumed, version 2.0.
+
+   plumed is free software: you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   plumed is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with plumed.  If not, see <http://www.gnu.org/licenses/>.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
+#include "core/ActionWithValue.h"
+#include "core/ActionRegister.h"
+#include "core/PlumedMain.h"
+#include "core/ActionSet.h"
+#include "vesselbase/BridgeVessel.h"
+#include "vesselbase/ActionWithVessel.h"
+#include "VectorMultiColvar.h"
+
+//+PLUMEDOC MCOLVARF AVERAGE_VECTOR
+/*
+Calculate an average vector
+
+\par Examples
+
+*/
+//+ENDPLUMEDOC
+
+namespace PLMD {
+namespace crystallization {
+
+class VectorAverage : 
+  public PLMD::ActionWithValue,
+  public vesselbase::ActionWithVessel
+{
+private:
+  vesselbase::BridgeVessel* myBridgeVessel;
+  VectorMultiColvar* mycolv;
+  std::vector<double> values, derivatives;
+public:
+  static void registerKeywords( Keywords& keys );
+  VectorAverage(const ActionOptions&ao);
+/// Don't actually clear the derivatives when this is called from plumed main.  
+/// They are calculated inside another action and clearing them would be bad  
+  void clearDerivatives(){}
+  void doJobsRequiredBeforeTaskList();
+  unsigned getNumberOfDerivatives();
+  void performTask();
+  void finishComputations();
+  void calculate(){}
+  void apply();
+  void calculateNumericalDerivatives( ActionWithValue* a=NULL );
+  bool isPeriodic();
+  void deactivate_task();
+};
+
+PLUMED_REGISTER_ACTION(VectorAverage,"AVERAGE_VECTOR")
+
+void VectorAverage::registerKeywords( Keywords& keys ){
+  Action::registerKeywords( keys );
+  ActionWithValue::registerKeywords( keys );
+  ActionWithVessel::registerKeywords( keys );
+  keys.add("compulsory","ARG","the label of the action that calculates the vectors we are interested in averaging");
+}
+
+VectorAverage::VectorAverage(const ActionOptions&ao):
+Action(ao),
+ActionWithValue(ao),
+ActionWithVessel(ao)
+{
+  std::string mlab; parse("ARG",mlab);
+  mycolv = plumed.getActionSet().selectWithLabel<crystallization::VectorMultiColvar*>(mlab);
+  if(!mycolv) error("action labeled " + mlab + " does not exist or is not a multicolvar");
+  std::string functype=mycolv->getName();
+  log.printf("  calculating average %s vector\n",functype.c_str() );
+
+  if( checkNumericalDerivatives() ){
+      // If we use numerical derivatives we have to force the base
+      // multicolvar to also use numerical derivatives
+      ActionWithValue* vv=dynamic_cast<ActionWithValue*>( mycolv );
+      plumed_assert( vv ); vv->useNumericalDerivatives();
+  }
+
+  // Now set up the bridging vessel (has to be done this way for internal arrays to be resized properly)
+  addDependency(mycolv); myBridgeVessel = mycolv->addBridgingVessel( this );
+  // And create value
+  addValueWithDerivatives(); setNotPeriodic(); 
+  // Resize everything
+  unsigned nder = mycolv->getNumberOfDerivatives();
+  unsigned ncomp = mycolv->getNumberOfQuantities() - 5;
+  values.resize( ncomp ); derivatives.resize( ncomp*nder );
+  getPntrToComponent(0)->resizeDerivatives( nder );
+}
+
+void VectorAverage::doJobsRequiredBeforeTaskList(){
+  ActionWithValue::clearDerivatives(); 
+  values.assign( values.size(), 0.0 );
+  derivatives.assign( derivatives.size(), 0.0 );
+}
+
+unsigned VectorAverage::getNumberOfDerivatives(){
+  return mycolv->getNumberOfDerivatives();
+}
+
+void VectorAverage::performTask(){
+  unsigned nder=mycolv->getNumberOfDerivatives();
+  for(unsigned i=5;i<mycolv->getNumberOfQuantities();++i){
+     values[i-5] += mycolv->getElementValue( i ); 
+     unsigned nl=(i-5)*nder, nj=i*nder;
+     for(unsigned j=0;j<mycolv->getNumberOfDerivatives();++j){
+         derivatives[nl+j] += mycolv->getElementDerivative( nj + j );
+     }
+  }
+}
+
+void VectorAverage::finishComputations(){
+  comm.Sum( values ); comm.Sum( derivatives ); 
+  double norm = static_cast<double>( mycolv->getFullNumberOfTasks() );
+  double sum=0; unsigned nder = mycolv->getNumberOfDerivatives();
+  for(unsigned i=0;i<values.size();++i){ values[i]/=norm; sum+=values[i]*values[i]; }
+
+  double inorm = 1.0 / ( norm*sqrt(sum) );
+  Value* val=getPntrToComponent(0); val->set( sqrt(sum) ); 
+  for(unsigned icomp=0;icomp<values.size();++icomp){
+     for(unsigned jder=0;jder<mycolv->getNumberOfDerivatives();++jder){
+        val->addDerivative( jder, inorm*values[icomp]*derivatives[nder*icomp+jder] );
+     }
+  }
+}
+
+void VectorAverage::apply(){
+  Value* val=getPntrToComponent(0); 
+  std::vector<double> tforces( mycolv->getNumberOfDerivatives(), 0 );
+  if( val->applyForce( tforces ) ) mycolv->addForcesOnAtoms( tforces );
+}
+
+void VectorAverage::calculateNumericalDerivatives( ActionWithValue* a ){
+  myBridgeVessel->completeNumericalDerivatives();
+}
+
+bool VectorAverage::isPeriodic(){
+  plumed_merror("This should never be called");
+  return mycolv->isPeriodic();
+}
+
+void VectorAverage::deactivate_task(){
+  plumed_merror("This should never be called");
+}
+
+
+}
+}
diff --git a/src/crystallization/VectorMultiColvar.cpp b/src/crystallization/VectorMultiColvar.cpp
new file mode 100644
index 000000000..07fe77582
--- /dev/null
+++ b/src/crystallization/VectorMultiColvar.cpp
@@ -0,0 +1,193 @@
+/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+   Copyright (c) 2012 The plumed team
+   (see the PEOPLE file at the root of the distribution for a list of names)
+
+   See http://www.plumed-code.org for more information.
+
+   This file is part of plumed, version 2.0.
+
+   plumed is free software: you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   plumed is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with plumed.  If not, see <http://www.gnu.org/licenses/>.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
+#include "multicolvar/MultiColvarFunction.h"
+#include "VectorMultiColvar.h"
+
+namespace PLMD {
+namespace crystallization {
+
+void VectorMultiColvar::registerKeywords( Keywords& keys ){
+  MultiColvar::registerKeywords( keys );
+}
+
+VectorMultiColvar::VectorMultiColvar(const ActionOptions& ao):
+PLUMED_MULTICOLVAR_INIT(ao),
+firstcall(false),
+vecs(NULL)
+{
+  setLowMemOption(true);
+}
+
+void VectorMultiColvar::setVectorDimensionality( const unsigned& ncomp, const bool& comp, const int& nat ){
+  // Store number of derivatives and if vectors are complex
+  ncomponents = ncomp; complexvec=comp; 
+  if(complexvec) dervec.resize( 2*ncomponents );
+  else dervec.resize( ncomponents );
+  // Read in the atoms if we are using multicolvar reading
+  int natoms=nat; readAtoms( natoms );
+  // Create the store vector object
+  std::string param; vesselbase::VesselOptions da("","",0,param,this);
+  Keywords keys; StoreVectorsVessel::registerKeywords( keys );
+  vesselbase::VesselOptions da2(da,keys);
+  vecs = new StoreVectorsVessel(da2);
+  // Add the vessel to the base
+  addVessel(vecs);
+  // Read in any vessels
+  readVesselKeywords();
+  // Resize a holder for the derivatives of the norm of the vector
+}
+
+double VectorMultiColvar::doCalculation(){
+  // Now calculate the vector
+  calculateVector();
+  // Sort out the active derivatives
+  updateActiveAtoms();
+
+  // Now calculate the norm of the vector (this is what we return here)
+  double norm=0, inorm;
+  if(complexvec){
+     for(unsigned i=0;i<ncomponents;++i) norm += getComponent(i)*getComponent(i) + getImaginaryComponent(i)*getImaginaryComponent(i); 
+     norm=sqrt(norm); inorm = 1.0 / norm;
+     for(unsigned i=0;i<ncomponents;++i){ dervec[i] = inorm*getComponent(i); dervec[ncomponents+i] = inorm*getImaginaryComponent(i); } 
+  } else {
+     for(unsigned i=0;i<ncomponents;++i) norm += getComponent(i)*getComponent(i);
+     norm=sqrt(norm); inorm = 1.0 / norm;
+     for(unsigned i=0;i<ncomponents;++i) dervec[i] = inorm*getComponent(i); 
+  }
+
+  if( usingLowMem() ){
+     vecs->storeDerivativesLowMem( 0 );
+     vecs->chainRule( 0, dervec );
+  } else {
+     vecs->storeDerivativesHighMem( getCurrentPositionInTaskList() );
+     vecs->chainRule( getCurrentPositionInTaskList(), dervec );
+  }
+
+  // Add derivatives to base multicolvars
+  Vector tmpd;
+  for(unsigned i=0;i<atoms_with_derivatives.getNumberActive();++i){
+       unsigned k=atoms_with_derivatives[i];
+       tmpd[0]=vecs->getFinalDerivative(3*i+0); 
+       tmpd[1]=vecs->getFinalDerivative(3*i+1); 
+       tmpd[2]=vecs->getFinalDerivative(3*i+2); 
+       MultiColvarBase::addAtomsDerivatives( 0, k, tmpd );
+  }   
+  unsigned vvbase=3*atoms_with_derivatives.getNumberActive(); Tensor tmpv;
+  for(unsigned i=0;i<3;++i){
+      for(unsigned j=0;j<3;++j){
+          tmpv(i,j) = vecs->getFinalDerivative( vvbase+3*i+j ); 
+      }   
+  }   
+  MultiColvarBase::addBoxDerivatives( 0, tmpv );
+
+  
+  return norm;
+}
+
+void VectorMultiColvar::useInMultiColvarFunction( const bool store_director ){
+  if( setupCentralAtomVessel() ) return;
+  vecs->usedInFunction( store_director );
+}
+
+void VectorMultiColvar::getValueForTask( const unsigned& iatom, std::vector<double>& vals ) const {
+  vecs->getVector( iatom, vals );
+}
+
+void VectorMultiColvar::addWeightedValueDerivatives( const unsigned& iatom, const unsigned& base_cv_no, const double& weight, multicolvar::MultiColvarFunction* func ){
+  if( usingLowMem() ){
+     vecs->recompute( iatom, 1 ); 
+     for(unsigned j=0;j<getNumberOfQuantities()-5;++j) vecs->chainRuleForComponent( 1, j, 5+j, base_cv_no, weight, func );
+  } else {
+     for(unsigned j=0;j<getNumberOfQuantities()-5;++j) vecs->chainRuleForComponent( iatom, j, 5+j, base_cv_no, weight, func );
+  }
+}
+
+void VectorMultiColvar::finishWeightedAverageCalculation( multicolvar::MultiColvarFunction* func ){
+  // And calculate the norm of the vector
+  double norm=0, inorm; std::vector<unsigned> tmpindices( 1 + func->getNumberOfDerivatives() );
+  if(complexvec){
+     for(unsigned i=0;i<ncomponents;++i){
+        // Calculate average vector
+        func->quotientRule(5+i, 1, 5+i); func->quotientRule(5+ncomponents+i, 1, 5+ncomponents+i);
+        // Calculate length of vector
+        norm += func->getElementValue(5+i)*func->getElementValue(5+i) + func->getElementValue(5+ncomponents+i)*func->getElementValue(5+ncomponents+i);
+     }
+     norm=sqrt(norm); inorm = 1.0 / norm;
+     for(unsigned i=0;i<ncomponents;++i){ 
+        dervec[i] = inorm*func->getElementValue(5+i); dervec[ncomponents+i] = inorm*func->getElementValue(5+ncomponents+i); 
+     }
+     func->getIndexList( 1, 0, func->getNumberOfDerivatives(), tmpindices );
+     unsigned nder = func->getNumberOfDerivatives();
+     for(unsigned i=0;i<tmpindices[0];++i){
+         unsigned ind = tmpindices[1+i];
+         for(unsigned j=0;j<ncomponents;++j){
+             func->addElementDerivative( ind, dervec[j]*func->getElementDerivative(nder*(5+j) + ind) );
+             func->addElementDerivative( ind, dervec[ncomponents+j]*func->getElementDerivative(nder*(5+ncomponents+j) + ind) );
+         }
+     }
+  } else {
+     for(unsigned i=0;i<ncomponents;++i){
+         // Calculate average vector
+         func->quotientRule(5+i, 1, 5+i);
+         // Calculate length of vector
+         norm += func->getElementValue(5+i)*func->getElementValue(5+i);
+     }
+     norm=sqrt(norm); inorm = 1.0 / norm;
+     for(unsigned i=0;i<ncomponents;++i) dervec[i] = inorm*func->getElementValue(5+i); 
+     func->getIndexList( 1, 0, func->getNumberOfDerivatives(), tmpindices );
+     // And set derivatives given magnitude of the vector
+     unsigned nder = func->getNumberOfDerivatives();
+     for(unsigned i=0;i<tmpindices[0];++i){
+         unsigned ind = tmpindices[1+i];
+         for(unsigned j=0;j<ncomponents;++j){
+             func->addElementDerivative( ind, dervec[j]*func->getElementDerivative(nder*(5+j) + ind) );
+         }
+     }
+  }
+  func->setElementValue( 0, norm );
+}
+
+void VectorMultiColvar::addOrientationDerivativesToBase( const unsigned& iatom, const unsigned& jstore, const unsigned& base_cv_no, 
+                                                         const std::vector<double>& der, multicolvar::MultiColvarFunction* func ){
+  if( usingLowMem() ){
+      if(jstore==1){
+         if(firstcall){ vecs->recompute( iatom, jstore ); firstcall=false; }
+         vecs->chainRuleForVector( jstore, 0, base_cv_no, der, func );
+      } else {
+         vecs->recompute( iatom, jstore );
+         vecs->chainRuleForVector( jstore, 0, base_cv_no, der, func );
+      }
+  } else {
+      vecs->chainRuleForVector( iatom, 0, base_cv_no, der, func );
+  }
+}
+
+void VectorMultiColvar::addForcesOnAtoms( const std::vector<double>& inforces ){
+  plumed_dbg_assert( inforces.size()==getNumberOfDerivatives() );
+  std::vector<double> oldforces( getNumberOfDerivatives() ); 
+  getForcesFromVessels( oldforces ); 
+  for(unsigned i=0;i<getNumberOfDerivatives();++i) oldforces[i]+=inforces[i];
+  setForcesOnAtoms( oldforces );
+}
+
+}
+}
diff --git a/src/crystallization/VectorMultiColvar.h b/src/crystallization/VectorMultiColvar.h
new file mode 100644
index 000000000..def504e4c
--- /dev/null
+++ b/src/crystallization/VectorMultiColvar.h
@@ -0,0 +1,189 @@
+/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+   Copyright (c) 2012 The plumed team
+   (see the PEOPLE file at the root of the distribution for a list of names)
+
+   See http://www.plumed-code.org for more information.
+
+   This file is part of plumed, version 2.0.
+
+   plumed is free software: you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+
+   plumed is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with plumed.  If not, see <http://www.gnu.org/licenses/>.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
+#ifndef __PLUMED_crystallization_VectorMultiColvar_h
+#define __PLUMED_crystallization_VectorMultiColvar_h
+
+#include "tools/Matrix.h"
+#include "multicolvar/MultiColvar.h"
+#include "StoreVectorsVessel.h"
+
+namespace PLMD {
+namespace crystallization {
+
+class VectorMultiColvar : public multicolvar::MultiColvar {
+friend class StoreVectorsVessel;
+friend class OrientationSphere;
+friend class VectorAverage;
+private:
+/// Are the vectors complex
+  bool complexvec;
+/// Used to make sure central atom position is only calculated
+/// once when using orientation sphere
+  bool firstcall;
+/// How many components does the vector have
+  unsigned ncomponents;
+/// This object stores the vectors
+  StoreVectorsVessel* vecs;
+/// This is a tempory vector that is used to store derivatives
+  std::vector<double> dervec;
+protected:
+/// Set the dimensionality of the vector
+  void setVectorDimensionality( const unsigned&, const bool&, const int& );
+/// Add some value to the ith component of the vector
+  void addComponent( const unsigned&, const double& );
+/// Get the ith component
+  double getComponent( const unsigned& ) const ;
+/// Set the ith component
+  void setComponent( const unsigned&, const double& );
+/// Add derivatives of ith component of vector with repect to jth atom
+  void addAtomsDerivative( const unsigned&, const unsigned&, const Vector& );
+/// Add atomic derivatives to all components of matrix (note iatom is treated literally here - cf above)
+  void addAtomDerivativeToAllRealComponents( const unsigned& iatom, const std::vector<double>& vec, const Vector& avec );
+/// Add derivatives of ith component of vector with respect to the box 
+  void addBoxDerivatives( const unsigned&, const Tensor& );
+/// Add box derivatives to all components of matrix
+  void addBoxDerivativesToAllRealComponents( const std::vector<double>& vec, const Tensor& avec );
+/// Add some value to the imaginary part of the ith component of the vector
+  void addImaginaryComponent( const unsigned&, const double& );
+/// Get the ith component
+  double getImaginaryComponent( const unsigned& ) const ;
+/// Set the ith component
+  void setImaginaryComponent( const unsigned&, const double& );
+/// Add derivatives of the imaginary part of the ith component of vector with repect to jth atom
+  void addImaginaryAtomsDerivative( const unsigned&, const unsigned&, const Vector& );
+/// Add atomic derivatives to all components of matrix (note iatom is treated literally here - cf above)
+  void addAtomDerivativeToAllImagComponents( const unsigned& iatom, const std::vector<double>& vec, const Vector& avec );
+/// Add derivatives of the imaginary part of the ith component of vector with respect to the box 
+  void addImaginaryBoxDerivatives( const unsigned&, const Tensor& );
+/// Add box derivatives to all components of matrix
+  void addBoxDerivativesToAllImagComponents( const std::vector<double>& vec, const Tensor& avec );
+/// This can be used to accumulate derivative from a store of vectors
+  void accumulateDerivativesFromVector( const unsigned& ivec, const unsigned& base_cv_no, const double& weight, StoreVectorsVessel* vectors );
+/// Used in vector average to add forces from vector the the forces from here
+  void addForcesOnAtoms( const std::vector<double>& inforces );
+public:
+  static void registerKeywords( Keywords& keys );
+  VectorMultiColvar(const ActionOptions&);
+  ~VectorMultiColvar(){}
+/// The norm of a vector is not periodic
+  virtual bool isPeriodic(){ return false; }
+/// Calculate the multicolvar
+  double doCalculation();
+/// This shouldn't do anything
+  double compute(){ plumed_error(); }
+/// Calculate the vector
+  virtual void calculateVector()=0;
+/// Get the number of components in the vector
+  unsigned getNumberOfComponentsInVector() const ;
+/// Get the number of quantities we are calculating per step
+  unsigned getNumberOfQuantities();
+/// Store bits and bobs so they can be used in a function
+  void useInMultiColvarFunction( const bool store_director );
+/// Get the vector
+  void getValueForTask( const unsigned& iatom, std::vector<double>& vals ) const ;
+/// Used to accumulate values
+  void addWeightedValueDerivatives( const unsigned& iatom, const unsigned& base_cv_no, const double& weight, multicolvar::MultiColvarFunction* func );
+/// Used for calculating weighted averages
+  void finishWeightedAverageCalculation( multicolvar::MultiColvarFunction* func );
+/// Used in functions to add derivatives to the orientation vector
+  void addOrientationDerivativesToBase( const unsigned& iatom, const unsigned& jstore, const unsigned& base_cv_no, 
+                                        const std::vector<double>& der, multicolvar::MultiColvarFunction* func );
+/// Can we differentiate the orientation - yes we can the multicolvar is a vector
+  bool hasDifferentiableOrientation() const { return true; }
+};
+
+inline
+unsigned VectorMultiColvar::getNumberOfComponentsInVector() const {
+  return ncomponents; 
+}
+
+inline
+void VectorMultiColvar::addComponent( const unsigned& icomp, const double& val ){
+  plumed_dbg_assert( icomp<ncomponents );
+  addElementValue( 5 + icomp, val );
+}
+
+inline
+void VectorMultiColvar::setComponent( const unsigned& icomp, const double& val ){
+  plumed_dbg_assert( icomp<ncomponents );
+  setElementValue( 5 + icomp, val );
+} 
+  
+inline
+double VectorMultiColvar::getComponent( const unsigned& icomp ) const {
+  plumed_dbg_assert( icomp<ncomponents );
+  return getElementValue( 5 + icomp );
+} 
+
+
+inline
+void VectorMultiColvar::addAtomsDerivative( const unsigned& icomp, const unsigned& jatom, const Vector& der ){
+  plumed_dbg_assert( icomp<ncomponents && jatom<getNAtoms() );
+  MultiColvarBase::addAtomsDerivatives( 5 + icomp, getAtomIndex(jatom), der );
+}
+
+inline
+void VectorMultiColvar::addBoxDerivatives( const unsigned& icomp, const Tensor& vir ){
+  plumed_dbg_assert( icomp<ncomponents );
+  MultiColvarBase::addBoxDerivatives( 5 + icomp, vir );
+}
+
+inline
+void VectorMultiColvar::addImaginaryComponent( const unsigned& icomp, const double& val ){
+  plumed_dbg_assert( icomp<ncomponents && complexvec );
+  addElementValue( 5 + ncomponents + icomp, val );
+}
+
+inline
+void VectorMultiColvar::setImaginaryComponent( const unsigned& icomp, const double& val ){
+  plumed_dbg_assert( icomp<ncomponents && complexvec );
+  setElementValue( 5 + ncomponents + icomp, val );
+}
+
+inline 
+double VectorMultiColvar::getImaginaryComponent( const unsigned& icomp ) const {
+  plumed_dbg_assert( icomp<ncomponents && complexvec );
+  return getElementValue( 5 + ncomponents + icomp );
+} 
+
+inline
+void VectorMultiColvar::addImaginaryAtomsDerivative( const unsigned& icomp, const unsigned& jatom, const Vector& der){
+  plumed_dbg_assert( icomp<ncomponents && complexvec && jatom<getNAtoms() );
+  MultiColvarBase::addAtomsDerivatives( 5 + ncomponents + icomp, getAtomIndex(jatom), der );
+}
+
+inline
+void VectorMultiColvar::addImaginaryBoxDerivatives( const unsigned& icomp, const Tensor& vir ){
+  plumed_dbg_assert( icomp<ncomponents && complexvec );
+  MultiColvarBase::addBoxDerivatives( 5 + ncomponents + icomp, vir ); 
+}
+
+inline
+unsigned VectorMultiColvar::getNumberOfQuantities(){
+  if( complexvec ) return 5 + 2*ncomponents;
+  return 5 + ncomponents;
+}
+
+}
+}
+#endif
+
diff --git a/src/crystallization/module.type b/src/crystallization/module.type
new file mode 100644
index 000000000..de8327303
--- /dev/null
+++ b/src/crystallization/module.type
@@ -0,0 +1 @@
+default-off
-- 
GitLab