diff --git a/regtest/rt41/Makefile b/regtest/rt41/Makefile
new file mode 120000
index 0000000000000000000000000000000000000000..a19fbb5e94242934cf3be817c2bd68f92897f19d
--- /dev/null
+++ b/regtest/rt41/Makefile
@@ -0,0 +1 @@
+../scripts/test.make
\ No newline at end of file
diff --git a/regtest/rt41/colvar.reference b/regtest/rt41/colvar.reference
new file mode 100644
index 0000000000000000000000000000000000000000..14ce541c160f8075eba6f4d89353692c0f9a1879
--- /dev/null
+++ b/regtest/rt41/colvar.reference
@@ -0,0 +1,29 @@
+#! FIELDS time r1.X r2.X r2.Y r2.zzz
+ 0.000000   1.9434   1.9434   2.9434   0.0001
+ 5.000000   1.3261   1.3261   2.3261   0.0001
+ 10.000000   3.1900   3.1900   4.1900   0.0001
+ 15.000000   5.5554   5.5554   6.5554   0.0001
+ 20.000000   6.8811   6.8811   7.8811   0.0000
+ 25.000000   8.1518   8.1518   9.1518   0.0000
+ 30.000000  10.1206  10.1206  11.1206   0.0000
+ 35.000000  10.9254  10.9254  11.9254   0.0001
+ 40.000000  13.4767  13.4767  14.4767   0.0001
+ 45.000000  14.5201  14.5201  15.5201   0.0001
+ 50.000000  15.0187  15.0187  16.0187   0.0000
+ 55.000000  15.7926  15.7926  16.7926   0.0001
+ 60.000000  19.5301  19.5301  20.5301   0.0000
+ 65.000000  20.1734  20.1734  21.1734   0.0001
+ 70.000000  22.1538  22.1538  23.1538   0.0001
+ 75.000000  23.5398  23.5398  24.5398   0.0001
+ 80.000000  24.3638  24.3638  25.3638   0.0001
+ 85.000000  26.9164  26.9164  27.9164   0.0000
+ 90.000000  28.4074  28.4074  29.4074   0.0001
+ 95.000000  29.6254  29.6254  30.6254   0.0001
+ 100.000000  31.1434  31.1434  32.1434   0.0001
+ 105.000000  33.3878  33.3878  34.3878   0.0000
+ 110.000000  34.5353  34.5353  35.5353   0.0001
+ 115.000000  36.8600  36.8600  37.8600   0.0001
+ 120.000000  37.7380  37.7380  38.7380   0.0001
+ 125.000000  38.9521  38.9521  39.9521   0.0000
+ 130.000000  41.9895  41.9895  42.9895   0.0001
+ 135.000000  41.9978  41.9978  42.9978   0.0001
diff --git a/regtest/rt41/config b/regtest/rt41/config
new file mode 100644
index 0000000000000000000000000000000000000000..2c148d2022107d8a8fc489c0fb6bb16dc38cf45f
--- /dev/null
+++ b/regtest/rt41/config
@@ -0,0 +1,2 @@
+type=driver
+arg="--plumed plumed.dat --trajectory-stride 50 --timestep 0.005 --noatoms"
diff --git a/regtest/rt41/input_colvar b/regtest/rt41/input_colvar
new file mode 100644
index 0000000000000000000000000000000000000000..5ef6c8256607307d3ad74f6c909127bb4e48fd88
--- /dev/null
+++ b/regtest/rt41/input_colvar
@@ -0,0 +1,547 @@
+#! FIELDS time p2.X p2.Y p2.zzz p3.X p3.Y p3.zzz
+ 0.000000   1.9434   2.9434   0.0001   1.9434   2.9434   0.0001
+ 0.250000   1.0090   2.0090   0.0001   1.0090   2.0090   0.0001
+ 0.500000   1.0579   2.0579   0.0001   1.0579   2.0579   0.0001
+ 0.750000   1.0331   2.0331   0.0000   1.0331   2.0331   0.0000
+ 1.000000   1.3768   2.3768   0.0001   1.3768   2.3768   0.0001
+ 1.250000   1.4149   2.4149   0.0000   1.4149   2.4149   0.0000
+ 1.500000   1.0652   2.0652   0.0001   1.0652   2.0652   0.0001
+ 1.750000   1.0157   2.0157   0.0000   1.0157   2.0157   0.0000
+ 2.000000   1.1453   2.1453   0.0001   1.1453   2.1453   0.0001
+ 2.250000   1.3270   2.3270   0.0000   1.3270   2.3270   0.0000
+ 2.500000   1.0513   2.0513   0.0000   1.0513   2.0513   0.0000
+ 2.750000   1.3269   2.3269   0.0000   1.3269   2.3269   0.0000
+ 3.000000   1.0317   2.0317   0.0001   1.0317   2.0317   0.0001
+ 3.250000   3.1167   4.1167   0.0001   3.1167   4.1167   0.0001
+ 3.500000   1.2525   2.2525   0.0001   1.2525   2.2525   0.0001
+ 3.750000   1.2615   2.2615   0.0001   1.2615   2.2615   0.0001
+ 4.000000   1.4116   2.4116   0.0001   1.4116   2.4116   0.0001
+ 4.250000   2.2825   3.2825   0.0001   2.2825   3.2825   0.0001
+ 4.500000   2.0832   3.0832   0.0000   2.0832   3.0832   0.0000
+ 4.750000   1.5973   2.5973   0.0001   1.5973   2.5973   0.0001
+ 5.000000   1.3261   2.3261   0.0001   1.3261   2.3261   0.0001
+ 5.250000   2.4515   3.4515   0.0001   2.4515   3.4515   0.0001
+ 5.500000   2.5412   3.5412   0.0001   2.5412   3.5412   0.0001
+ 5.750000   1.8538   2.8538   0.0000   1.8538   2.8538   0.0000
+ 6.000000   1.3933   2.3933   0.0001   1.3933   2.3933   0.0001
+ 6.250000   1.7948   2.7948   0.0000   1.7948   2.7948   0.0000
+ 6.500000   3.8916   4.8916   0.0001   3.8916   4.8916   0.0001
+ 6.750000   2.4106   3.4106   0.0001   2.4106   3.4106   0.0001
+ 7.000000   2.9130   3.9130   0.0000   2.9130   3.9130   0.0000
+ 7.250000   2.7856   3.7856   0.0000   2.7856   3.7856   0.0000
+ 7.500000   3.0248   4.0248   0.0001   3.0248   4.0248   0.0001
+ 7.750000   3.0256   4.0256   0.0001   3.0256   4.0256   0.0001
+ 8.000000   2.8465   3.8465   0.0001   2.8465   3.8465   0.0001
+ 8.250000   1.7385   2.7385   0.0001   1.7385   2.7385   0.0001
+ 8.500000   3.2267   4.2267   0.0001   3.2267   4.2267   0.0001
+ 8.750000   3.4119   4.4119   0.0000   3.4119   4.4119   0.0000
+ 9.000000   2.6281   3.6281   0.0000   2.6281   3.6281   0.0000
+ 9.250000   2.4505   3.4505   0.0001   2.4505   3.4505   0.0001
+ 9.500000   2.9935   3.9935   0.0001   2.9935   3.9935   0.0001
+ 9.750000   4.2826   5.2826   0.0001   4.2826   5.2826   0.0001
+ 10.000000   3.1900   4.1900   0.0001   3.1900   4.1900   0.0001
+ 10.250000   3.5456   4.5456   0.0000   3.5456   4.5456   0.0000
+ 10.500000   3.5451   4.5451   0.0000   3.5451   4.5451   0.0000
+ 10.750000   4.1587   5.1587   0.0001   4.1587   5.1587   0.0001
+ 11.000000   3.9178   4.9178   0.0000   3.9178   4.9178   0.0000
+ 11.250000   3.8826   4.8826   0.0001   3.8826   4.8826   0.0001
+ 11.500000   3.2615   4.2615   0.0001   3.2615   4.2615   0.0001
+ 11.750000   4.2869   5.2869   0.0001   4.2869   5.2869   0.0001
+ 12.000000   4.5757   5.5757   0.0000   4.5757   5.5757   0.0000
+ 12.250000   3.2142   4.2142   0.0000   3.2142   4.2142   0.0000
+ 12.500000   3.9086   4.9086   0.0001   3.9086   4.9086   0.0001
+ 12.750000   3.7618   4.7618   0.0001   3.7618   4.7618   0.0001
+ 13.000000   4.8157   5.8157   0.0001   4.8157   5.8157   0.0001
+ 13.250000   3.9568   4.9568   0.0001   3.9568   4.9568   0.0001
+ 13.500000   4.8524   5.8524   0.0000   4.8524   5.8524   0.0000
+ 13.750000   4.4105   5.4105   0.0000   4.4105   5.4105   0.0000
+ 14.000000   4.9450   5.9450   0.0001   4.9450   5.9450   0.0001
+ 14.250000   4.7719   5.7719   0.0001   4.7719   5.7719   0.0001
+ 14.500000   4.5365   5.5365   0.0001   4.5365   5.5365   0.0001
+ 14.750000   4.0972   5.0972   0.0001   4.0972   5.0972   0.0001
+ 15.000000   5.5554   6.5554   0.0001   5.5554   6.5554   0.0001
+ 15.250000   5.1352   6.1352   0.0001   5.1352   6.1352   0.0001
+ 15.500000   4.2067   5.2067   0.0000   4.2067   5.2067   0.0000
+ 15.750000   4.5249   5.5249   0.0001   4.5249   5.5249   0.0001
+ 16.000000   4.7725   5.7725   0.0001   4.7725   5.7725   0.0001
+ 16.250000   5.9837   6.9837   0.0001   5.9837   6.9837   0.0001
+ 16.500000   4.7753   5.7753   0.0000   4.7753   5.7753   0.0000
+ 16.750000   6.0804   7.0804   0.0001   6.0804   7.0804   0.0001
+ 17.000000   5.7243   6.7243   0.0000   5.7243   6.7243   0.0000
+ 17.250000   6.0755   7.0755   0.0001   6.0755   7.0755   0.0001
+ 17.500000   5.7907   6.7907   0.0000   5.7907   6.7907   0.0000
+ 17.750000   5.5556   6.5556   0.0001   5.5556   6.5556   0.0001
+ 18.000000   5.4734   6.4734   0.0001   5.4734   6.4734   0.0001
+ 18.250000   6.8349   7.8349   0.0001   6.8349   7.8349   0.0001
+ 18.500000   6.1115   7.1115   0.0001   6.1115   7.1115   0.0001
+ 18.750000   5.4763   6.4763   0.0001   5.4763   6.4763   0.0001
+ 19.000000   6.0577   7.0577   0.0000   6.0577   7.0577   0.0000
+ 19.250000   5.8285   6.8285   0.0001   5.8285   6.8285   0.0001
+ 19.500000   5.8165   6.8165   0.0001   5.8165   6.8165   0.0001
+ 19.750000   5.4695   6.4695   0.0000   5.4695   6.4695   0.0000
+ 20.000000   6.8811   7.8811   0.0000   6.8811   7.8811   0.0000
+ 20.250000   7.1282   8.1282   0.0000   7.1282   8.1282   0.0000
+ 20.500000   7.0992   8.0992   0.0001   7.0992   8.0992   0.0001
+ 20.750000   6.0105   7.0105   0.0001   6.0105   7.0105   0.0001
+ 21.000000   6.8671   7.8671   0.0000   6.8671   7.8671   0.0000
+ 21.250000   6.2864   7.2864   0.0001   6.2864   7.2864   0.0001
+ 21.500000   7.2471   8.2471   0.0000   7.2471   8.2471   0.0000
+ 21.750000   7.2481   8.2481   0.0000   7.2481   8.2481   0.0000
+ 22.000000   5.9782   6.9782   0.0001   5.9782   6.9782   0.0001
+ 22.250000   6.8523   7.8523   0.0001   6.8523   7.8523   0.0001
+ 22.500000   6.8326   7.8326   0.0001   6.8326   7.8326   0.0001
+ 22.750000   6.5175   7.5175   0.0000   6.5175   7.5175   0.0000
+ 23.000000   6.4000   7.4000   0.0000   6.4000   7.4000   0.0000
+ 23.250000   8.0028   9.0028   0.0000   8.0028   9.0028   0.0000
+ 23.500000   8.1695   9.1695   0.0000   8.1695   9.1695   0.0000
+ 23.750000   7.9851   8.9851   0.0001   7.9851   8.9851   0.0001
+ 24.000000   6.8908   7.8908   0.0001   6.8908   7.8908   0.0001
+ 24.250000   7.4686   8.4686   0.0001   7.4686   8.4686   0.0001
+ 24.500000   7.0070   8.0070   0.0001   7.0070   8.0070   0.0001
+ 24.750000   8.5092   9.5092   0.0001   8.5092   9.5092   0.0001
+ 25.000000   8.1518   9.1518   0.0000   8.1518   9.1518   0.0000
+ 25.250000   7.3926   8.3926   0.0001   7.3926   8.3926   0.0001
+ 25.500000   7.9078   8.9078   0.0001   7.9078   8.9078   0.0001
+ 25.750000   7.3901   8.3901   0.0001   7.3901   8.3901   0.0001
+ 26.000000   7.5108   8.5108   0.0000   7.5108   8.5108   0.0000
+ 26.250000   7.3993   8.3993   0.0000   7.3993   8.3993   0.0000
+ 26.500000   9.0054  10.0054   0.0000   9.0054  10.0054   0.0000
+ 26.750000   9.0212  10.0212   0.0001   9.0212  10.0212   0.0001
+ 27.000000   9.2067  10.2067   0.0000   9.2067  10.2067   0.0000
+ 27.250000   7.3974   8.3974   0.0001   7.3974   8.3974   0.0001
+ 27.500000   8.4983   9.4983   0.0000   8.4983   9.4983   0.0000
+ 27.750000   8.4074   9.4074   0.0001   8.4074   9.4074   0.0001
+ 28.000000   9.4812  10.4812   0.0000   9.4812  10.4812   0.0000
+ 28.250000   8.9480   9.9480   0.0000   8.9480   9.9480   0.0000
+ 28.500000   8.8156   9.8156   0.0001   8.8156   9.8156   0.0001
+ 28.750000   9.3383  10.3383   0.0001   9.3383  10.3383   0.0001
+ 29.000000   8.6766   9.6766   0.0001   8.6766   9.6766   0.0001
+ 29.250000   8.8167   9.8167   0.0001   8.8167   9.8167   0.0001
+ 29.500000   8.8586   9.8586   0.0000   8.8586   9.8586   0.0000
+ 29.750000   9.7681  10.7681   0.0000   9.7681  10.7681   0.0000
+ 30.000000  10.1206  11.1206   0.0000  10.1206  11.1206   0.0000
+ 30.250000  10.2048  11.2048   0.0000  10.2048  11.2048   0.0000
+ 30.500000   8.8600   9.8600   0.0000   8.8600   9.8600   0.0000
+ 30.750000   9.2746  10.2746   0.0000   9.2746  10.2746   0.0000
+ 31.000000   9.5056  10.5056   0.0001   9.5056  10.5056   0.0001
+ 31.250000  10.3959  11.3959   0.0000  10.3959  11.3959   0.0000
+ 31.500000  10.0084  11.0084   0.0001  10.0084  11.0084   0.0001
+ 31.750000   9.8521  10.8521   0.0000   9.8521  10.8521   0.0000
+ 32.000000  10.3120  11.3120   0.0001  10.3120  11.3120   0.0001
+ 32.250000   9.5696  10.5696   0.0001   9.5696  10.5696   0.0001
+ 32.500000  10.2229  11.2229   0.0001  10.2229  11.2229   0.0001
+ 32.750000   9.2246  10.2246   0.0000   9.2246  10.2246   0.0000
+ 33.000000  11.0408  12.0408   0.0000  11.0408  12.0408   0.0000
+ 33.250000  10.9355  11.9355   0.0001  10.9355  11.9355   0.0001
+ 33.500000  11.0212  12.0212   0.0001  11.0212  12.0212   0.0001
+ 33.750000   9.9950  10.9950   0.0000   9.9950  10.9950   0.0000
+ 34.000000  10.8371  11.8371   0.0000  10.8371  11.8371   0.0000
+ 34.250000  10.7630  11.7630   0.0000  10.7630  11.7630   0.0000
+ 34.500000  11.3749  12.3749   0.0000  11.3749  12.3749   0.0000
+ 34.750000  10.8268  11.8268   0.0000  10.8268  11.8268   0.0000
+ 35.000000  10.9254  11.9254   0.0001  10.9254  11.9254   0.0001
+ 35.250000  11.4695  12.4695   0.0001  11.4695  12.4695   0.0001
+ 35.500000  10.3754  11.3754   0.0001  10.3754  11.3754   0.0001
+ 35.750000  11.2141  12.2141   0.0001  11.2141  12.2141   0.0001
+ 36.000000  10.9006  11.9006   0.0001  10.9006  11.9006   0.0001
+ 36.250000  12.3187  13.3187   0.0000  12.3187  13.3187   0.0000
+ 36.500000  12.0581  13.0581   0.0001  12.0581  13.0581   0.0001
+ 36.750000  12.1095  13.1095   0.0001  12.1095  13.1095   0.0001
+ 37.000000  10.9742  11.9742   0.0000  10.9742  11.9742   0.0000
+ 37.250000  11.5190  12.5190   0.0000  11.5190  12.5190   0.0000
+ 37.500000  11.6730  12.6730   0.0001  11.6730  12.6730   0.0001
+ 37.750000  12.7361  13.7361   0.0001  12.7361  13.7361   0.0001
+ 38.000000  12.1409  13.1409   0.0001  12.1409  13.1409   0.0001
+ 38.250000  12.3599  13.3599   0.0000  12.3599  13.3599   0.0000
+ 38.500000  12.3989  13.3989   0.0001  12.3989  13.3989   0.0001
+ 38.750000  11.1104  12.1104   0.0001  11.1104  12.1104   0.0001
+ 39.000000  11.8881  12.8881   0.0001  11.8881  12.8881   0.0001
+ 39.250000  11.8041  12.8041   0.0000  11.8041  12.8041   0.0000
+ 39.500000  13.5494  14.5494   0.0000  13.5494  14.5494   0.0000
+ 39.750000  13.2306  14.2306   0.0001  13.2306  14.2306   0.0001
+ 40.000000  13.4767  14.4767   0.0001  13.4767  14.4767   0.0001
+ 40.250000  12.1017  13.1017   0.0000  12.1017  13.1017   0.0000
+ 40.500000  12.7382  13.7382   0.0000  12.7382  13.7382   0.0000
+ 40.750000  13.0408  14.0408   0.0001  13.0408  14.0408   0.0001
+ 41.000000  13.6144  14.6144   0.0001  13.6144  14.6144   0.0001
+ 41.250000  12.9117  13.9117   0.0001  12.9117  13.9117   0.0001
+ 41.500000  12.9911  13.9911   0.0000  12.9911  13.9911   0.0000
+ 41.750000  13.9208  14.9208   0.0001  13.9208  14.9208   0.0001
+ 42.000000  12.6076  13.6076   0.0001  12.6076  13.6076   0.0001
+ 42.250000  12.7982  13.7982   0.0001  12.7982  13.7982   0.0001
+ 42.500000  12.8370  13.8370   0.0000  12.8370  13.8370   0.0000
+ 42.750000  14.3876  15.3876   0.0000  14.3876  15.3876   0.0000
+ 43.000000  14.4720  15.4720   0.0001  14.4720  15.4720   0.0001
+ 43.250000  14.6719  15.6719   0.0001  14.6719  15.6719   0.0001
+ 43.500000  12.8227  13.8227   0.0000  12.8227  13.8227   0.0000
+ 43.750000  13.3502  14.3502   0.0000  13.3502  14.3502   0.0000
+ 44.000000  13.8173  14.8173   0.0001  13.8173  14.8173   0.0001
+ 44.250000  14.8745  15.8745   0.0000  14.8745  15.8745   0.0000
+ 44.500000  13.9710  14.9710   0.0000  13.9710  14.9710   0.0000
+ 44.750000  14.0178  15.0178   0.0001  14.0178  15.0178   0.0001
+ 45.000000  14.5201  15.5201   0.0001  14.5201  15.5201   0.0001
+ 45.250000  13.1381  14.1381   0.0001  13.1381  14.1381   0.0001
+ 45.500000  14.5934  15.5934   0.0001  14.5934  15.5934   0.0001
+ 45.750000  13.4843  14.4843   0.0001  13.4843  14.4843   0.0001
+ 46.000000  15.4321  16.4321   0.0000  15.4321  16.4321   0.0000
+ 46.250000  15.4231  16.4231   0.0000  15.4231  16.4231   0.0000
+ 46.500000  15.6806  16.6806   0.0001  15.6806  16.6806   0.0001
+ 46.750000  13.9386  14.9386   0.0000  13.9386  14.9386   0.0000
+ 47.000000  14.5064  15.5064   0.0000  14.5064  15.5064   0.0000
+ 47.250000  14.9508  15.9508   0.0001  14.9508  15.9508   0.0001
+ 47.500000  15.5179  16.5179   0.0000  15.5179  16.5179   0.0000
+ 47.750000  15.1034  16.1034   0.0001  15.1034  16.1034   0.0001
+ 48.000000  14.9114  15.9114   0.0001  14.9114  15.9114   0.0001
+ 48.250000  15.5412  16.5412   0.0002  15.5412  16.5412   0.0002
+ 48.500000  14.3423  15.3423   0.0001  14.3423  15.3423   0.0001
+ 48.750000  15.2094  16.2094   0.0001  15.2094  16.2094   0.0001
+ 49.000000  15.1168  16.1168   0.0001  15.1168  16.1168   0.0001
+ 49.250000  15.9575  16.9575   0.0000  15.9575  16.9575   0.0000
+ 49.500000  16.2539  17.2539   0.0001  16.2539  17.2539   0.0001
+ 49.750000  16.3489  17.3489   0.0001  16.3489  17.3489   0.0001
+ 50.000000  15.0187  16.0187   0.0000  15.0187  16.0187   0.0000
+ 50.250000  16.3272  17.3272   0.0001  16.3272  17.3272   0.0001
+ 50.500000  16.0528  17.0528   0.0001  16.0528  17.0528   0.0001
+ 50.750000  16.4196  17.4196   0.0001  16.4196  17.4196   0.0001
+ 51.000000  16.8259  17.8259   0.0001  16.8259  17.8259   0.0001
+ 51.250000  15.5587  16.5587   0.0000  15.5587  16.5587   0.0000
+ 51.500000  16.3950  17.3950   0.0001  16.3950  17.3950   0.0001
+ 51.750000  15.2996  16.2996   0.0001  15.2996  16.2996   0.0001
+ 52.000000  16.0925  17.0925   0.0001  16.0925  17.0925   0.0001
+ 52.250000  16.4335  17.4335   0.0001  16.4335  17.4335   0.0001
+ 52.500000  17.1829  18.1829   0.0000  17.1829  18.1829   0.0000
+ 52.750000  17.5384  18.5384   0.0001  17.5384  18.5384   0.0001
+ 53.000000  17.2631  18.2631   0.0001  17.2631  18.2631   0.0001
+ 53.250000  16.2614  17.2614   0.0001  16.2614  17.2614   0.0001
+ 53.500000  17.0032  18.0032   0.0000  17.0032  18.0032   0.0000
+ 53.750000  17.5027  18.5027   0.0001  17.5027  18.5027   0.0001
+ 54.000000  17.0522  18.0522   0.0001  17.0522  18.0522   0.0001
+ 54.250000  17.3532  18.3532   0.0001  17.3532  18.3532   0.0001
+ 54.500000  16.6059  17.6059   0.0000  16.6059  17.6059   0.0000
+ 54.750000  16.9281  17.9281   0.0001  16.9281  17.9281   0.0001
+ 55.000000  15.7926  16.7926   0.0001  15.7926  16.7926   0.0001
+ 55.250000  17.2110  18.2110   0.0000  17.2110  18.2110   0.0000
+ 55.500000  17.5846  18.5846   0.0001  17.5846  18.5846   0.0001
+ 55.750000  17.8666  18.8666   0.0001  17.8666  18.8666   0.0001
+ 56.000000  18.2468  19.2468   0.0001  18.2468  19.2468   0.0001
+ 56.250000  18.1218  19.1218   0.0001  18.1218  19.1218   0.0001
+ 56.500000  16.9705  17.9705   0.0001  16.9705  17.9705   0.0001
+ 56.750000  17.7506  18.7506   0.0000  17.7506  18.7506   0.0000
+ 57.000000  18.1285  19.1285   0.0001  18.1285  19.1285   0.0001
+ 57.250000  18.0247  19.0247   0.0001  18.0247  19.0247   0.0001
+ 57.500000  18.0924  19.0924   0.0001  18.0924  19.0924   0.0001
+ 57.750000  17.9847  18.9847   0.0001  17.9847  18.9847   0.0001
+ 58.000000  17.8135  18.8135   0.0001  17.8135  18.8135   0.0001
+ 58.250000  17.0656  18.0656   0.0001  17.0656  18.0656   0.0001
+ 58.500000  17.6905  18.6905   0.0001  17.6905  18.6905   0.0001
+ 58.750000  18.5188  19.5188   0.0001  18.5188  19.5188   0.0001
+ 59.000000  18.9824  19.9824   0.0000  18.9824  19.9824   0.0000
+ 59.250000  19.1426  20.1426   0.0000  19.1426  20.1426   0.0000
+ 59.500000  19.0595  20.0595   0.0001  19.0595  20.0595   0.0001
+ 59.750000  18.7700  19.7700   0.0001  18.7700  19.7700   0.0001
+ 60.000000  19.5301  20.5301   0.0000  19.5301  20.5301   0.0000
+ 60.250000  19.3457  20.3457   0.0001  19.3457  20.3457   0.0001
+ 60.500000  19.0527  20.0527   0.0000  19.0527  20.0527   0.0000
+ 60.750000  19.1799  20.1799   0.0001  19.1799  20.1799   0.0001
+ 61.000000  18.9106  19.9106   0.0000  18.9106  19.9106   0.0000
+ 61.250000  18.8817  19.8817   0.0001  18.8817  19.8817   0.0001
+ 61.500000  18.0910  19.0910   0.0001  18.0910  19.0910   0.0001
+ 61.750000  19.0315  20.0315   0.0001  19.0315  20.0315   0.0001
+ 62.000000  19.4761  20.4761   0.0001  19.4761  20.4761   0.0001
+ 62.250000  19.6156  20.6156   0.0001  19.6156  20.6156   0.0001
+ 62.500000  20.5450  21.5450   0.0000  20.5450  21.5450   0.0000
+ 62.750000  19.5918  20.5918   0.0001  19.5918  20.5918   0.0001
+ 63.000000  19.4211  20.4211   0.0001  19.4211  20.4211   0.0001
+ 63.250000  20.2402  21.2402   0.0000  20.2402  21.2402   0.0000
+ 63.500000  20.5284  21.5284   0.0001  20.5284  21.5284   0.0001
+ 63.750000  19.3983  20.3983   0.0001  19.3983  20.3983   0.0001
+ 64.000000  20.0183  21.0183   0.0001  20.0183  21.0183   0.0001
+ 64.250000  19.2567  20.2567   0.0000  19.2567  20.2567   0.0000
+ 64.500000  19.9145  20.9145   0.0002  19.9145  20.9145   0.0002
+ 64.750000  18.8479  19.8479   0.0000  18.8479  19.8479   0.0000
+ 65.000000  20.1734  21.1734   0.0001  20.1734  21.1734   0.0001
+ 65.250000  20.7230  21.7230   0.0000  20.7230  21.7230   0.0000
+ 65.500000  20.9771  21.9771   0.0000  20.9771  21.9771   0.0000
+ 65.750000  21.4568  22.4568   0.0000  21.4568  22.4568   0.0000
+ 66.000000  20.5483  21.5483   0.0001  20.5483  21.5483   0.0001
+ 66.250000  20.9015  21.9015   0.0001  20.9015  21.9015   0.0001
+ 66.500000  21.1926  22.1926   0.0000  21.1926  22.1926   0.0000
+ 66.750000  21.3126  22.3126   0.0001  21.3126  22.3126   0.0001
+ 67.000000  20.2389  21.2389   0.0001  20.2389  21.2389   0.0001
+ 67.250000  20.7179  21.7179   0.0001  20.7179  21.7179   0.0001
+ 67.500000  20.4320  21.4320   0.0000  20.4320  21.4320   0.0000
+ 67.750000  21.0638  22.0638   0.0001  21.0638  22.0638   0.0001
+ 68.000000  19.9730  20.9730   0.0001  19.9730  20.9730   0.0001
+ 68.250000  21.5699  22.5699   0.0001  21.5699  22.5699   0.0001
+ 68.500000  21.6000  22.6000   0.0000  21.6000  22.6000   0.0000
+ 68.750000  21.6405  22.6405   0.0000  21.6405  22.6405   0.0000
+ 69.000000  22.3750  23.3750   0.0000  22.3750  23.3750   0.0000
+ 69.250000  21.1910  22.1910   0.0001  21.1910  22.1910   0.0001
+ 69.500000  21.6420  22.6420   0.0001  21.6420  22.6420   0.0001
+ 69.750000  22.0399  23.0399   0.0000  22.0399  23.0399   0.0000
+ 70.000000  22.1538  23.1538   0.0001  22.1538  23.1538   0.0001
+ 70.250000  21.7350  22.7350   0.0000  21.7350  22.7350   0.0000
+ 70.500000  22.1667  23.1667   0.0001  22.1667  23.1667   0.0001
+ 70.750000  20.8745  21.8745   0.0000  20.8745  21.8745   0.0000
+ 71.000000  22.1309  23.1309   0.0001  22.1309  23.1309   0.0001
+ 71.250000  20.8508  21.8508   0.0000  20.8508  21.8508   0.0000
+ 71.500000  22.0031  23.0031   0.0001  22.0031  23.0031   0.0001
+ 71.750000  22.5268  23.5268   0.0000  22.5268  23.5268   0.0000
+ 72.000000  22.4361  23.4361   0.0000  22.4361  23.4361   0.0000
+ 72.250000  23.4168  24.4168   0.0001  23.4168  24.4168   0.0001
+ 72.500000  22.6156  23.6156   0.0001  22.6156  23.6156   0.0001
+ 72.750000  22.2523  23.2523   0.0001  22.2523  23.2523   0.0001
+ 73.000000  23.4150  24.4150   0.0000  23.4150  24.4150   0.0000
+ 73.250000  23.1197  24.1197   0.0001  23.1197  24.1197   0.0001
+ 73.500000  22.6274  23.6274   0.0001  22.6274  23.6274   0.0001
+ 73.750000  22.9903  23.9903   0.0001  22.9903  23.9903   0.0001
+ 74.000000  22.1998  23.1998   0.0000  22.1998  23.1998   0.0000
+ 74.250000  23.1016  24.1016   0.0001  23.1016  24.1016   0.0001
+ 74.500000  22.2019  23.2019   0.0001  22.2019  23.2019   0.0001
+ 74.750000  23.1618  24.1618   0.0001  23.1618  24.1618   0.0001
+ 75.000000  23.5398  24.5398   0.0001  23.5398  24.5398   0.0001
+ 75.250000  23.4311  24.4311   0.0000  23.4311  24.4311   0.0000
+ 75.500000  24.1070  25.1070   0.0001  24.1070  25.1070   0.0001
+ 75.750000  23.2174  24.2174   0.0001  23.2174  24.2174   0.0001
+ 76.000000  23.3223  24.3223   0.0001  23.3223  24.3223   0.0001
+ 76.250000  24.4679  25.4679   0.0000  24.4679  25.4679   0.0000
+ 76.500000  24.1788  25.1788   0.0001  24.1788  25.1788   0.0001
+ 76.750000  23.8679  24.8679   0.0000  23.8679  24.8679   0.0000
+ 77.000000  24.4349  25.4349   0.0001  24.4349  25.4349   0.0001
+ 77.250000  23.3146  24.3146   0.0000  23.3146  24.3146   0.0000
+ 77.500000  24.2799  25.2799   0.0001  24.2799  25.2799   0.0001
+ 77.750000  22.8923  23.8923   0.0001  22.8923  23.8923   0.0001
+ 78.000000  23.9463  24.9463   0.0001  23.9463  24.9463   0.0001
+ 78.250000  24.1507  25.1507   0.0001  24.1507  25.1507   0.0001
+ 78.500000  24.9419  25.9419   0.0000  24.9419  25.9419   0.0000
+ 78.750000  24.5084  25.5084   0.0000  24.5084  25.5084   0.0000
+ 79.000000  24.4508  25.4508   0.0001  24.4508  25.4508   0.0001
+ 79.250000  24.9320  25.9320   0.0000  24.9320  25.9320   0.0000
+ 79.500000  25.6032  26.6032   0.0001  25.6032  26.6032   0.0001
+ 79.750000  25.1812  26.1812   0.0001  25.1812  26.1812   0.0001
+ 80.000000  24.3638  25.3638   0.0001  24.3638  25.3638   0.0001
+ 80.250000  25.2763  26.2763   0.0001  25.2763  26.2763   0.0001
+ 80.500000  24.1775  25.1775   0.0001  24.1775  25.1775   0.0001
+ 80.750000  25.4439  26.4439   0.0001  25.4439  26.4439   0.0001
+ 81.000000  24.0178  25.0178   0.0001  24.0178  25.0178   0.0001
+ 81.250000  25.8796  26.8796   0.0001  25.8796  26.8796   0.0001
+ 81.500000  25.1323  26.1323   0.0001  25.1323  26.1323   0.0001
+ 81.750000  26.1321  27.1321   0.0000  26.1321  27.1321   0.0000
+ 82.000000  25.3992  26.3992   0.0000  25.3992  26.3992   0.0000
+ 82.250000  25.1701  26.1701   0.0000  25.1701  26.1701   0.0000
+ 82.500000  25.7325  26.7325   0.0000  25.7325  26.7325   0.0000
+ 82.750000  26.7783  27.7783   0.0000  26.7783  27.7783   0.0000
+ 83.000000  26.0982  27.0982   0.0001  26.0982  27.0982   0.0001
+ 83.250000  25.1358  26.1358   0.0001  25.1358  26.1358   0.0001
+ 83.500000  26.1838  27.1838   0.0001  26.1838  27.1838   0.0001
+ 83.750000  24.7608  25.7608   0.0000  24.7608  25.7608   0.0000
+ 84.000000  26.6122  27.6122   0.0001  26.6122  27.6122   0.0001
+ 84.250000  24.6686  25.6686   0.0001  24.6686  25.6686   0.0001
+ 84.500000  27.0565  28.0565   0.0001  27.0563  28.0563   0.0001
+ 84.750000  26.3199  27.3199   0.0000  26.3199  27.3199   0.0000
+ 85.000000  26.9164  27.9164   0.0000  26.9164  27.9164   0.0000
+ 85.250000  27.0967  28.0967   0.0000  27.0967  28.0967   0.0000
+ 85.500000  26.3207  27.3207   0.0001  26.3207  27.3207   0.0001
+ 85.750000  26.8933  27.8933   0.0001  26.8933  27.8933   0.0001
+ 86.000000  27.9389  28.9389   0.0000  27.9389  28.9389   0.0000
+ 86.250000  27.2855  28.2855   0.0000  27.2855  28.2855   0.0000
+ 86.500000  26.5680  27.5680   0.0001  26.5680  27.5680   0.0001
+ 86.750000  27.3561  28.3561   0.0001  27.3561  28.3561   0.0001
+ 87.000000  25.8892  26.8892   0.0001  25.8892  26.8892   0.0001
+ 87.250000  27.6517  28.6517   0.0001  27.6517  28.6517   0.0001
+ 87.500000  26.0048  27.0048   0.0001  26.0048  27.0048   0.0001
+ 87.750000  28.2374  29.2374   0.0001  28.2374  29.2374   0.0001
+ 88.000000  27.7457  28.7457   0.0000  27.7457  28.7457   0.0000
+ 88.250000  27.7768  28.7768   0.0000  27.7768  28.7768   0.0000
+ 88.500000  28.1172  29.1172   0.0001  28.1172  29.1172   0.0001
+ 88.750000  27.4677  28.4677   0.0001  27.4677  28.4677   0.0001
+ 89.000000  28.3160  29.3160   0.0000  28.3160  29.3160   0.0000
+ 89.250000  29.2626  30.2626   0.0000  29.2626  30.2626   0.0000
+ 89.500000  28.9803  29.9803   0.0001  28.9803  29.9803   0.0001
+ 89.750000  27.7864  28.7864   0.0001  27.7864  28.7864   0.0001
+ 90.000000  28.4074  29.4074   0.0001  28.4074  29.4074   0.0001
+ 90.250000  27.3048  28.3048   0.0001  27.3048  28.3048   0.0001
+ 90.500000  28.6134  29.6134   0.0001  28.6134  29.6134   0.0001
+ 90.750000  26.7885  27.7885   0.0001  26.7885  27.7885   0.0001
+ 91.000000  28.6276  29.6276   0.0001  28.6276  29.6276   0.0001
+ 91.250000  29.0343  30.0343   0.0000  29.0343  30.0343   0.0000
+ 91.500000  28.9067  29.9067   0.0000  28.9067  29.9067   0.0000
+ 91.750000  29.4537  30.4537   0.0000  29.4537  30.4537   0.0000
+ 92.000000  29.0662  30.0662   0.0001  29.0662  30.0662   0.0001
+ 92.250000  29.7005  30.7005   0.0001  29.7005  30.7005   0.0001
+ 92.500000  29.6141  30.6141   0.0001  29.6141  30.6141   0.0001
+ 92.750000  29.6393  30.6393   0.0000  29.6393  30.6393   0.0000
+ 93.000000  29.4964  30.4964   0.0001  29.4964  30.4964   0.0001
+ 93.250000  29.7888  30.7888   0.0001  29.7888  30.7888   0.0001
+ 93.500000  28.0586  29.0586   0.0001  28.0587  29.0587   0.0001
+ 93.750000  29.9872  30.9872   0.0001  29.9872  30.9872   0.0001
+ 94.000000  28.1782  29.1782   0.0001  28.1784  29.1784   0.0001
+ 94.250000  28.7693  29.7693   0.0001  28.7693  29.7693   0.0001
+ 94.500000  29.3541  30.3541   0.0000  29.3541  30.3541   0.0000
+ 94.750000  29.2034  30.2034   0.0000  29.2034  30.2034   0.0000
+ 95.000000  29.6254  30.6254   0.0001  29.6254  30.6254   0.0001
+ 95.250000  29.1481  30.1481   0.0000  29.1481  30.1481   0.0000
+ 95.500000  29.7590  30.7590   0.0000  29.7590  30.7590   0.0000
+ 95.750000  29.6971  30.6971   0.0000  29.6971  30.6971   0.0000
+ 96.000000  29.8248  30.8248   0.0001  29.8248  30.8248   0.0001
+ 96.250000  29.4804  30.4804   0.0001  29.4804  30.4804   0.0001
+ 96.500000  30.1150  31.1150   0.0001  30.1150  31.1150   0.0001
+ 96.750000  29.2877  30.2877   0.0001  29.2877  30.2877   0.0001
+ 97.000000  30.9275  31.9275   0.0001  30.9275  31.9275   0.0001
+ 97.250000  28.2932  29.2932   0.0001  28.2932  29.2932   0.0001
+ 97.500000  31.3549  32.3549   0.0001  31.3438  32.3438   0.0001
+ 97.750000  31.1175  32.1175   0.0000  31.1172  32.1172   0.0000
+ 98.000000  30.7921  31.7921   0.0001  30.7921  31.7921   0.0001
+ 98.250000  31.1990  32.1990   0.0001  31.1990  32.1990   0.0001
+ 98.500000  30.6488  31.6488   0.0001  30.6488  31.6488   0.0001
+ 98.750000  31.3462  32.3462   0.0000  31.3462  32.3462   0.0000
+ 99.000000  31.4013  32.4013   0.0000  31.4013  32.4013   0.0000
+ 99.250000  31.1480  32.1480   0.0000  31.1480  32.1480   0.0000
+ 99.500000  31.2079  32.2079   0.0000  31.2079  32.2079   0.0000
+ 99.750000  31.4616  32.4616   0.0001  31.4616  32.4616   0.0001
+ 100.000000  31.1434  32.1434   0.0001  31.1434  32.1434   0.0001
+ 100.250000  31.8777  32.8777   0.0001  31.8777  32.8777   0.0001
+ 100.500000  29.9216  30.9216   0.0001  29.9216  30.9216   0.0001
+ 100.750000  33.5430  34.5430   0.0001  33.5430  34.5430   0.0001
+ 101.000000  33.1555  34.1555   0.0000  33.1555  34.1555   0.0000
+ 101.250000  31.6932  32.6932   0.0000  31.6932  32.6932   0.0000
+ 101.500000  32.5199  33.5199   0.0001  32.5199  33.5199   0.0001
+ 101.750000  31.5930  32.5930   0.0001  31.5930  32.5930   0.0001
+ 102.000000  32.2981  33.2981   0.0000  32.2981  33.2981   0.0000
+ 102.250000  32.2886  33.2886   0.0000  32.2886  33.2886   0.0000
+ 102.500000  32.4482  33.4482   0.0001  32.4482  33.4482   0.0001
+ 102.750000  32.8988  33.8988   0.0001  32.8988  33.8988   0.0001
+ 103.000000  32.6250  33.6250   0.0001  32.6250  33.6250   0.0001
+ 103.250000  31.8492  32.8492   0.0001  31.8492  32.8492   0.0001
+ 103.500000  33.2489  34.2489   0.0001  33.2489  34.2489   0.0001
+ 103.750000  31.5151  32.5151   0.0001  31.5151  32.5151   0.0001
+ 104.000000  35.1123  36.1123   0.0001  34.9958  35.9958   0.0001
+ 104.250000  33.5786  34.5786   0.0000  33.5786  34.5786   0.0000
+ 104.500000  33.3743  34.3743   0.0000  33.3743  34.3743   0.0000
+ 104.750000  32.8565  33.8565   0.0001  32.8565  33.8565   0.0001
+ 105.000000  33.3878  34.3878   0.0000  33.3878  34.3878   0.0000
+ 105.250000  33.5407  34.5407   0.0001  33.5407  34.5407   0.0001
+ 105.500000  33.5782  34.5782   0.0001  33.5782  34.5782   0.0001
+ 105.750000  33.4424  34.4424   0.0001  33.4424  34.4424   0.0001
+ 106.000000  33.5877  34.5877   0.0000  33.5877  34.5877   0.0000
+ 106.250000  33.6673  34.6673   0.0001  33.6673  34.6673   0.0001
+ 106.500000  33.4228  34.4228   0.0001  33.4228  34.4228   0.0001
+ 106.750000  34.7414  35.7414   0.0001  34.7414  35.7414   0.0001
+ 107.000000  33.3332  34.3332   0.0001  33.3332  34.3332   0.0001
+ 107.250000  35.0870  36.0870   0.0001  35.0870  36.0870   0.0001
+ 107.500000  33.5445  34.5445   0.0001  33.5445  34.5445   0.0001
+ 107.750000  33.5552  34.5552   0.0000  33.5552  34.5552   0.0000
+ 108.000000  33.3770  34.3770   0.0000  33.3770  34.3770   0.0000
+ 108.250000  32.8967  33.8967   0.0001  32.8967  33.8967   0.0001
+ 108.500000  33.6200  34.6200   0.0001  33.6200  34.6200   0.0001
+ 108.750000  33.5640  34.5640   0.0001  33.5640  34.5640   0.0001
+ 109.000000  33.5274  34.5274   0.0000  33.5274  34.5274   0.0000
+ 109.250000  33.8522  34.8522   0.0000  33.8522  34.8522   0.0000
+ 109.500000  33.6961  34.6961   0.0001  33.6961  34.6961   0.0001
+ 109.750000  33.5290  34.5290   0.0000  33.5290  34.5290   0.0000
+ 110.000000  34.5353  35.5353   0.0001  34.5353  35.5353   0.0001
+ 110.250000  33.5084  34.5084   0.0001  33.5084  34.5084   0.0001
+ 110.500000  37.9057  38.9057   0.0001  36.9972  37.9972   0.0001
+ 110.750000  35.4568  36.4568   0.0001  35.4568  36.4568   0.0001
+ 111.000000  35.2015  36.2015   0.0001  35.2015  36.2015   0.0001
+ 111.250000  34.8816  35.8816   0.0001  34.8816  35.8816   0.0001
+ 111.500000  35.0138  36.0138   0.0001  35.0138  36.0138   0.0001
+ 111.750000  35.2748  36.2748   0.0001  35.2748  36.2748   0.0001
+ 112.000000  35.1521  36.1521   0.0000  35.1521  36.1521   0.0000
+ 112.250000  35.0458  36.0458   0.0001  35.0458  36.0458   0.0001
+ 112.500000  35.1097  36.1097   0.0001  35.1097  36.1097   0.0001
+ 112.750000  35.2703  36.2703   0.0000  35.2703  36.2703   0.0000
+ 113.000000  35.2164  36.2164   0.0000  35.2164  36.2164   0.0000
+ 113.250000  35.6830  36.6830   0.0000  35.6830  36.6830   0.0000
+ 113.500000  35.1352  36.1352   0.0001  35.1352  36.1352   0.0001
+ 113.750000  37.9694  38.9694   0.0001  37.9691  38.9691   0.0001
+ 114.000000  36.1329  37.1329   0.0000  36.1329  37.1329   0.0000
+ 114.250000  36.0489  37.0489   0.0001  36.0489  37.0489   0.0001
+ 114.500000  35.7678  36.7678   0.0001  35.7678  36.7678   0.0001
+ 114.750000  35.9607  36.9607   0.0000  35.9607  36.9607   0.0000
+ 115.000000  36.8600  37.8600   0.0001  36.8600  37.8600   0.0001
+ 115.250000  36.0576  37.0576   0.0001  36.0576  37.0576   0.0001
+ 115.500000  36.3707  37.3707   0.0001  36.3707  37.3707   0.0001
+ 115.750000  36.7418  37.7418   0.0000  36.7418  37.7418   0.0000
+ 116.000000  36.1698  37.1698   0.0000  36.1698  37.1698   0.0000
+ 116.250000  35.9551  36.9551   0.0000  35.9551  36.9551   0.0000
+ 116.500000  36.8455  37.8455   0.0000  36.8455  37.8455   0.0000
+ 116.750000  36.7463  37.7463   0.0001  36.7463  37.7463   0.0001
+ 117.000000  39.4013  40.4013   0.0001  38.9881  39.9881   0.0001
+ 117.250000  37.0099  38.0099   0.0001  37.0099  38.0099   0.0001
+ 117.500000  37.0492  38.0492   0.0001  37.0492  38.0492   0.0001
+ 117.750000  36.0642  37.0642   0.0000  36.0642  37.0642   0.0000
+ 118.000000  36.7462  37.7462   0.0000  36.7462  37.7462   0.0000
+ 118.250000  37.6375  38.6375   0.0001  37.6375  38.6375   0.0001
+ 118.500000  37.0123  38.0123   0.0001  37.0123  38.0123   0.0001
+ 118.750000  37.6777  38.6777   0.0001  37.6777  38.6777   0.0001
+ 119.000000  37.6633  38.6633   0.0001  37.6633  38.6633   0.0001
+ 119.250000  37.0775  38.0775   0.0000  37.0775  38.0775   0.0000
+ 119.500000  37.7632  38.7632   0.0000  37.7632  38.7632   0.0000
+ 119.750000  37.8503  38.8503   0.0001  37.8503  38.8503   0.0001
+ 120.000000  37.7380  38.7380   0.0001  37.7380  38.7380   0.0001
+ 120.250000  40.6057  41.6057   0.0001  40.6057  41.6057   0.0001
+ 120.500000  37.9875  38.9875   0.0001  37.9875  38.9875   0.0001
+ 120.750000  38.2308  39.2308   0.0001  38.2308  39.2308   0.0001
+ 121.000000  37.0110  38.0110   0.0000  37.0110  38.0110   0.0000
+ 121.250000  38.1251  39.1251   0.0001  38.1251  39.1251   0.0001
+ 121.500000  38.9580  39.9580   0.0000  38.9580  39.9580   0.0000
+ 121.750000  37.4896  38.4896   0.0001  37.4896  38.4896   0.0001
+ 122.000000  38.1362  39.1362   0.0001  38.1362  39.1362   0.0001
+ 122.250000  38.2823  39.2823   0.0000  38.2823  39.2823   0.0000
+ 122.500000  38.0283  39.0283   0.0000  38.0283  39.0283   0.0000
+ 122.750000  38.2731  39.2731   0.0000  38.2731  39.2731   0.0000
+ 123.000000  38.5351  39.5351   0.0000  38.5351  39.5351   0.0000
+ 123.250000  38.6889  39.6889   0.0001  38.6889  39.6889   0.0001
+ 123.500000  41.0177  42.0177   0.0001  41.0177  42.0177   0.0001
+ 123.750000  39.0327  40.0327   0.0001  39.0327  40.0327   0.0001
+ 124.000000  39.2150  40.2150   0.0001  39.2150  40.2150   0.0001
+ 124.250000  38.3662  39.3662   0.0001  38.3662  39.3662   0.0001
+ 124.500000  39.3881  40.3881   0.0001  39.3881  40.3881   0.0001
+ 124.750000  39.7801  40.7801   0.0000  39.7801  40.7801   0.0000
+ 125.000000  38.9521  39.9521   0.0000  38.9521  39.9521   0.0000
+ 125.250000  39.2335  40.2335   0.0000  39.2335  40.2335   0.0000
+ 125.500000  39.4236  40.4236   0.0001  39.4236  40.4236   0.0001
+ 125.750000  39.0332  40.0332   0.0001  39.0332  40.0332   0.0001
+ 126.000000  39.0309  40.0309   0.0000  39.0309  40.0309   0.0000
+ 126.250000  40.0990  41.0990   0.0000  40.0990  41.0990   0.0000
+ 126.500000  39.5974  40.5974   0.0001  39.5974  40.5974   0.0001
+ 126.750000  41.4831  42.4831   0.0001  41.4831  42.4831   0.0001
+ 127.000000  39.5779  40.5779   0.0001  39.5779  40.5779   0.0001
+ 127.250000  39.9957  40.9957   0.0000  39.9957  40.9957   0.0000
+ 127.500000  39.1887  40.1887   0.0001  39.1887  40.1887   0.0001
+ 127.750000  39.7603  40.7603   0.0000  39.7603  40.7603   0.0000
+ 128.000000  40.9212  41.9212   0.0001  40.9212  41.9212   0.0001
+ 128.250000  39.6202  40.6202   0.0000  39.6202  40.6202   0.0000
+ 128.500000  40.1471  41.1471   0.0000  40.1471  41.1471   0.0000
+ 128.750000  40.2331  41.2331   0.0001  40.2331  41.2331   0.0001
+ 129.000000  40.0902  41.0902   0.0001  40.0902  41.0902   0.0001
+ 129.250000  39.6322  40.6322   0.0000  39.6322  40.6322   0.0000
+ 129.500000  41.0105  42.0105   0.0000  41.0105  42.0105   0.0000
+ 129.750000  40.2607  41.2607   0.0001  40.2607  41.2607   0.0001
+ 130.000000  41.9895  42.9895   0.0001  41.9895  42.9895   0.0001
+ 130.250000  40.9519  41.9519   0.0001  40.9519  41.9519   0.0001
+ 130.500000  40.8069  41.8069   0.0001  40.8069  41.8069   0.0001
+ 130.750000  39.7650  40.7650   0.0001  39.7650  40.7650   0.0001
+ 131.000000  40.2980  41.2980   0.0001  40.2980  41.2980   0.0001
+ 131.250000  41.9747  42.9747   0.0001  41.9747  42.9747   0.0001
+ 131.500000  40.3756  41.3756   0.0000  40.3756  41.3756   0.0000
+ 131.750000  41.2743  42.2743   0.0001  41.2743  42.2743   0.0001
+ 132.000000  40.8975  41.8975   0.0001  40.8975  41.8975   0.0001
+ 132.250000  40.9555  41.9555   0.0001  40.9555  41.9555   0.0001
+ 132.500000  40.6201  41.6201   0.0000  40.6201  41.6201   0.0000
+ 132.750000  41.5831  42.5831   0.0001  41.5831  42.5831   0.0001
+ 133.000000  41.1452  42.1452   0.0000  41.1452  42.1452   0.0000
+ 133.250000  41.9675  42.9675   0.0001  41.9675  42.9675   0.0001
+ 133.500000  41.8360  42.8360   0.0001  41.8360  42.8360   0.0001
+ 133.750000  41.9216  42.9216   0.0000  41.9216  42.9216   0.0000
+ 134.000000  41.8315  42.8315   0.0001  41.8315  42.8315   0.0001
+ 134.250000  41.3247  42.3247   0.0001  41.3247  42.3247   0.0001
+ 134.500000  41.9998  42.9998   0.0001  41.9998  42.9998   0.0001
+ 134.750000  41.0553  42.0553   0.0001  41.0553  42.0553   0.0001
+ 135.000000  41.9978  42.9978   0.0001  41.9978  42.9978   0.0001
+ 135.250000  41.9695  42.9695   0.0000  41.9695  42.9695   0.0000
+ 135.500000  41.9529  42.9529   0.0001  41.9529  42.9529   0.0001
+ 135.750000  41.8093  42.8093   0.0000  41.8093  42.8093   0.0000
+ 136.000000  41.9968  42.9968   0.0001  41.9968  42.9968   0.0001
+ 136.250000  41.9985  42.9985   0.0001  41.9985  42.9985   0.0001
diff --git a/regtest/rt41/plumed.dat b/regtest/rt41/plumed.dat
new file mode 100644
index 0000000000000000000000000000000000000000..f6acab8e81dec4e0da687224c68eb2d7c4977209
--- /dev/null
+++ b/regtest/rt41/plumed.dat
@@ -0,0 +1,3 @@
+r1: READ VALUES=p2.X  FILE=input_colvar 
+r2: READ VALUES=p3.* FILE=input_colvar 
+PRINT ARG=r1.*,r2.* STRIDE=1000 FILE=colvar FMT=%8.4f
diff --git a/src/basic/ActionAtomistic.cpp b/src/basic/ActionAtomistic.cpp
index aa54b740dcbfcb8ef510e98febc45ca291b5cc00..b430a561ebc73f25dd4588173a40521f62af0643 100644
--- a/src/basic/ActionAtomistic.cpp
+++ b/src/basic/ActionAtomistic.cpp
@@ -48,6 +48,7 @@ lockRequestAtoms(false),
 atoms(plumed.getAtoms())
 {
   atoms.add(this);
+  if(atoms.getNatoms()==0) error("Cannot perform calculations involving atoms without atoms");
 }
 
 void ActionAtomistic::registerKeywords( Keywords& keys ){
diff --git a/src/basic/ColvarEnergy.cpp b/src/basic/ColvarEnergy.cpp
index 848603ebc15590168070592d01cb6d977dba0e6a..2b0b295e511b5e5ead6b6bf680bdef68c0575052 100644
--- a/src/basic/ColvarEnergy.cpp
+++ b/src/basic/ColvarEnergy.cpp
@@ -22,6 +22,7 @@
 #include "Colvar.h"
 #include "ActionRegister.h"
 #include "PlumedMain.h"
+#include "Atoms.h"
 
 #include <string>
 #include <cmath>
@@ -53,6 +54,7 @@ class ColvarEnergy : public Colvar {
 public:
   ColvarEnergy(const ActionOptions&);
 // active methods:
+  void prepare();
   virtual void calculate();
   static void registerKeywords( Keywords& keys );
 };
@@ -80,6 +82,9 @@ void ColvarEnergy::registerKeywords( Keywords& keys ){
   keys.remove("NUMERICAL_DERIVATIVES"); 
 }
 
+void ColvarEnergy::prepare(){
+  plumed.getAtoms().setCollectEnergy(true);
+}
 
 // calculator
 void ColvarEnergy::calculate(){
diff --git a/src/basic/GenericRead.cpp b/src/basic/GenericRead.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4e1d95e48f1b80ba3d5ceadedcd4defec6afe2e8
--- /dev/null
+++ b/src/basic/GenericRead.cpp
@@ -0,0 +1,179 @@
+/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+   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 "ActionPilot.h"
+#include "ActionWithValue.h"
+#include "ActionRegister.h"
+#include "PlumedMain.h"
+#include "ActionSet.h"
+#include "Atoms.h"
+
+namespace PLMD{
+
+//+PLUMEDOC GENERIC READ
+/* 
+Read quantities from a colvar file.
+
+\par Examples
+
+*/
+//+ENDPLUMEDOC
+
+class GenericRead :
+public ActionPilot,
+public ActionWithValue
+{
+friend class ActionPilot;
+private:
+  bool cloned_file;
+  unsigned nlinesPerStep;
+  std::string filename;
+  PlumedIFile* ifile;
+  std::vector<Value*> readvals;
+public:
+  static void registerKeywords( Keywords& keys );
+  GenericRead(const ActionOptions&);
+  ~GenericRead();
+  void prepare();
+  void apply(){};
+  void calculate();
+  void update();
+  std::string getFilename() const;
+  PlumedIFile* getFile();
+};
+
+PLUMED_REGISTER_ACTION(GenericRead,"READ")
+
+void GenericRead::registerKeywords(Keywords& keys){
+  Action::registerKeywords(keys);
+  ActionPilot::registerKeywords(keys);
+  ActionWithValue::registerKeywords(keys);
+  keys.add("compulsory","STRIDE","1","the frequency with which the file should be read.");
+  keys.add("compulsory","EVERY","1","only read every ith line of the colvar file. This should be used if the colvar was written more frequently than the trajectory.");
+  keys.add("compulsory","VALUES","the values to read from the file");
+  keys.add("compulsory","FILE","the name of the file from which to read these quantities");
+  keys.remove("NUMERICAL_DERIVATIVES");
+}
+
+GenericRead::GenericRead(const ActionOptions&ao):
+Action(ao),
+ActionPilot(ao),
+ActionWithValue(ao),
+nlinesPerStep(1)
+{
+  // Read the file name from the input line
+  parse("FILE",filename);
+  // Open the file if it is not already opened
+  cloned_file=false;
+  std::vector<GenericRead*> other_reads=plumed.getActionSet().select<GenericRead*>();
+  for(unsigned i=0;i<other_reads.size();++i){
+      if( other_reads[i]->getFilename()==filename ){
+          ifile=other_reads[i]->getFile();
+          cloned_file=true;
+      }
+  }
+  if( !cloned_file ){
+      ifile=new PlumedIFile();
+      if( !ifile->FileExist(filename) ) error("could not find file named " + filename);
+      ifile->link(*this);
+      ifile->open(filename);
+      ifile->allowIgnoredFields();
+  }
+  parse("EVERY",nlinesPerStep);
+  if(nlinesPerStep>1) log.printf("  only reading every %dth line of file %s\n",nlinesPerStep,filename.c_str() );
+  else log.printf("  reading data from file %s\n",filename.c_str() );
+  // Find out what we are reading
+  std::vector<std::string> valread; parseVector("VALUES",valread);
+
+  std::size_t dot=valread[0].find_first_of('.');
+  if( valread[0].find(".")!=std::string::npos ){
+      std::string label=valread[0].substr(0,dot);
+      std::string name=valread[0].substr(dot+1);
+      if( name=="*" ){
+         if( valread.size()>1 ) error("all values must be from the same Action when using READ");
+         std::vector<std::string> fieldnames;
+         ifile->scanFieldList( fieldnames );
+         for(unsigned i=0;i<fieldnames.size();++i){
+             if( fieldnames[i].substr(0,dot)==label ){
+                 readvals.push_back(new Value(this, fieldnames[i], false) );
+                 addComponent( fieldnames[i].substr(dot+1) ); componentIsNotPeriodic( fieldnames[i].substr(dot+1) );
+             }
+         }
+      } else {
+         readvals.push_back(new Value(this, valread[0], false) );
+         addComponent( name ); componentIsNotPeriodic( valread[0].substr(dot+1) );
+         for(unsigned i=1;i<valread.size();++i) {
+             if( valread[i].substr(0,dot)!=label ) error("all values must be from the same Action when using READ");;
+             readvals.push_back(new Value(this, valread[i], false) );
+             addComponent( valread[i].substr(dot+1) ); componentIsNotPeriodic( valread[i].substr(dot+1) );
+         }
+      }
+  } else {
+      if( valread.size()!=1 ) error("all values must be from the same Action when using READ");
+      readvals.push_back(new Value(this, valread[0], false) );
+      addValue(); setNotPeriodic();
+      log.printf("  reading value %s and storing as %s\n",valread[0].c_str() ,getLabel().c_str() );   
+  }
+  checkRead();
+}
+
+GenericRead::~GenericRead(){
+  if( !cloned_file ){ ifile->close(); delete ifile; }
+  for(unsigned i=0;i<readvals.size();++i) delete readvals[i];
+}
+
+std::string GenericRead::getFilename() const {
+  return filename;
+}
+
+PlumedIFile* GenericRead::getFile(){
+  return ifile;
+}
+
+void GenericRead::prepare(){
+  if( !cloned_file ){
+      double du_time; 
+      if( !ifile->scanField("time",du_time) ){
+           error("Reached end of file " + filename + " before end of trajectory");
+      } else if( fabs( du_time-getTime() )>epsilon ){
+          std::string str_dutime,str_ptime; Tools::convert(du_time,str_dutime); Tools::convert(getTime(),str_ptime);
+          error("mismatched times in colvar files : colvar time=" + str_dutime + " plumed time=" + str_ptime );
+      }
+  }  
+}
+
+void GenericRead::calculate(){
+  for(unsigned i=0;i<readvals.size();++i){
+      ifile->scanField( readvals[i] );
+      getPntrToComponent(i)->set( readvals[i]->get() ); 
+  }
+}
+
+void GenericRead::update(){
+  if( !cloned_file ){
+      for(unsigned i=0;i<nlinesPerStep;++i){
+         ifile->scanField(); double du_time;
+         if( plumed.getAtoms().getNatoms()==0 && !ifile->scanField("time",du_time) ) plumed.stop(); 
+      }
+  }
+}
+
+}
diff --git a/src/basic/PlumedMain.cpp b/src/basic/PlumedMain.cpp
index 886e84c40b8fb28ec611dc24c316a61a3993f552..8c3ce20ac66a40fd66ea2603973f004ff70e4cbf 100644
--- a/src/basic/PlumedMain.cpp
+++ b/src/basic/PlumedMain.cpp
@@ -29,7 +29,6 @@
 #include "Atoms.h"
 #include <set>
 #include "config/PlumedConfig.h"
-#include "Colvar.h"
 #include <cstdlib>
 #include "ActionRegister.h"
 #include "GREX.h"
@@ -63,7 +62,9 @@ PlumedMain::PlumedMain():
   bias(0.0),
   exchangePatterns(*new(ExchangePatterns)),
   novirial(false),
-  restart(false)
+  restart(false),
+  stopFlag(NULL),
+  stopNow(false)
 {
   log.link(comm);
   log.setLinePrefix("PLUMED: ");
@@ -272,6 +273,10 @@ void PlumedMain::cmd(const std::string & word,void*val){
        CHECK_NOTINIT(initialized,word);
        CHECK_NULL(val,word);
        log.open(static_cast<char*>(val),"w");
+  } else if(word=="setStopFlag"){
+       CHECK_NOTINIT(initialized,word);
+       CHECK_NULL(val,word);
+       stopFlag=static_cast<int*>(val);
   } else if(word=="getExchangesFlag"){
        CHECK_INIT(initialized,word);
        CHECK_NULL(val,word);
@@ -455,16 +460,11 @@ void PlumedMain::prepareDependencies(){
   };
 
 // also, if one of them is the total energy, tell to atoms that energy should be collected
-  bool collectEnergy=false;
   for(ActionSet::iterator p=actionSet.begin();p!=actionSet.end();++p){
     if((*p)->isActive()){
-      if(Colvar *c=dynamic_cast<Colvar*>(*p)) {
-        if(c->checkIsEnergy()) collectEnergy=true;
-      }
       if((*p)->checkNeedsGradients()) (*p)->setOption("GRADIENTS");
     }
   }
-  atoms.setCollectEnergy(collectEnergy);
 
   stopwatch.stop("1 Prepare dependencies");
 
@@ -541,6 +541,11 @@ void PlumedMain::justApply(){
   for(ActionSet::iterator p=actionSet.begin();p!=actionSet.end();++p){
     if((*p)->isActive()) (*p)->update();
   }
+// Check that no action has told the calculation to stop
+  if(stopNow){
+     if(stopFlag) (*stopFlag)=1;
+     else plumed_merror("your md code cannot handle plumed stop events - add a call to plumed.comm(stopFlag,stopCondition)");
+  }  
   stopwatch.stop("5 Applying (backward loop)");
 }
 
@@ -614,6 +619,9 @@ void PlumedMain::eraseFile(PlumedFileBase&f){
   files.erase(&f);
 }
 
+void PlumedMain::stop(){ 
+  stopNow=true;
+} 
 
 
 
diff --git a/src/basic/PlumedMain.h b/src/basic/PlumedMain.h
index b3fc8ab5c97f66d0293d889019a08bc68262a92f..164f0253d6137c2061addeb863f8caea10679193 100644
--- a/src/basic/PlumedMain.h
+++ b/src/basic/PlumedMain.h
@@ -129,6 +129,10 @@ private:
   std::set<PlumedFileBase*> files;
   typedef std::set<PlumedFileBase*>::iterator files_iterator;
 
+/// Stuff to make plumed stop the MD code cleanly
+  int* stopFlag;
+  bool stopNow;
+
 public:
 /// Flag to switch off virial calculation (for debug)
   bool novirial;
@@ -237,6 +241,8 @@ public:
   void fflush();
 /// Check if restarting
   bool getRestart()const;
+/// Stop the calculation cleanly (both the MD code and plumed)
+  void stop();
 };
 
 /////
diff --git a/src/cltools/CLToolDriver.cpp b/src/cltools/CLToolDriver.cpp
index a8b6a0f5aeb2e5895b1e567a7501e3fdcb2f4031..36641c791cfe0e67b7759f71122aed2b5c42f7dd 100644
--- a/src/cltools/CLToolDriver.cpp
+++ b/src/cltools/CLToolDriver.cpp
@@ -80,6 +80,7 @@ void CLToolDriver<real>::registerKeywords( Keywords& keys ){
   keys.add("compulsory","--plumed","plumed.dat","specify the name of the plumed input file");
   keys.add("compulsory","--timestep","1.0","the timestep that was used in the calculation that produced this trajectory in picoseconds");
   keys.add("compulsory","--trajectory-stride","1","the frequency with which frames were output to this trajectory during the simulation");
+  keys.addFlag("--noatoms",false,"don't read in a trajectory.  Just use colvar files as specified in plumed.dat");
   keys.add("atoms","--ixyz","the trajectory in xyz format");
   keys.add("optional","--length-units","units for length, either as a string or a number");
   keys.add("optional","--dump-forces","dump the forces on a file");
@@ -124,6 +125,9 @@ int CLToolDriver<real>::main(FILE* in,FILE*out,PlumedCommunicator& pc){
       );
       return 0;
   }
+  // Are we reading trajectory data
+  bool noatoms; parseFlag("--noatoms",noatoms);
+
   std::string fakein; 
   bool debugfloat=parse("--debug-float",fakein);
   if(debugfloat && sizeof(real)!=sizeof(float)){
@@ -136,12 +140,14 @@ int CLToolDriver<real>::main(FILE* in,FILE*out,PlumedCommunicator& pc){
 
   bool debug_pd=parse("--debug-pd",fakein);
   bool debug_dd=parse("--debug-dd",fakein);
+  if( debug_pd || debug_dd ) plumed_massert(!noatoms,"cannot debug without atoms");
   int multi=1;
   FILE*multi_log=NULL;
   bool debug_grex=parse("--debug-grex",fakein);
   PlumedCommunicator intracomm;
   PlumedCommunicator intercomm;
   if(debug_grex){
+    plumed_massert( !noatoms, "must have atoms to debug_grex");
     Tools::convert(fakein,multi);
     int ntot=pc.Get_size();
     int nintra=ntot/multi;
@@ -168,58 +174,68 @@ int CLToolDriver<real>::main(FILE* in,FILE*out,PlumedCommunicator& pc){
   unsigned stride; parse("--trajectory-stride",stride);
 // are we writing forces
   string dumpforces(""), dumpforcesFmt("%f");; 
-  parse("--dump-forces",dumpforces);
+  if(!noatoms) parse("--dump-forces",dumpforces);
   if(dumpforces!="") parse("--dump-forces-fmt",dumpforcesFmt);
 
 // Read in an xyz file
-  string trajectoryFile("");
-  std::string traj_xyz; parse("--ixyz",traj_xyz);
-  if(traj_xyz.length()>0 && trajectoryFile.length()==0) trajectoryFile=traj_xyz;
-  if(trajectoryFile.length()==0){
-    fprintf(out,"ERROR: missing trajectory data\n"); 
-    return 0;
-  }
-  string lengthUnits(""); parse("--length-units",lengthUnits);
-  if(lengthUnits.length()>0) units.setLength(lengthUnits);
-
-  string pdbfile; parse("--pdb",pdbfile);
-  if(pdbfile.length()>0){
-    bool check=pdb.read(pdbfile,false,1.0);
-    plumed_massert(check,"error reading pdb file");
-  }
+  string trajectoryFile(""), pdbfile("");
+  bool pbc_cli_given=false; vector<double> pbc_cli_box(9,0.0);
+  if(!noatoms){
+     std::string traj_xyz; parse("--ixyz",traj_xyz);
+     if(traj_xyz.length()>0 && trajectoryFile.length()==0) trajectoryFile=traj_xyz;
+     if(trajectoryFile.length()==0){
+       fprintf(stderr,"ERROR: missing trajectory data\n"); 
+       return 1;
+     }
+     string lengthUnits(""); parse("--length-units",lengthUnits);
+     if(lengthUnits.length()>0) units.setLength(lengthUnits);
+  
+     parse("--pdb",pdbfile);
+     if(pdbfile.length()>0){
+       bool check=pdb.read(pdbfile,false,1.0);
+       plumed_massert(check,"error reading pdb file");
+     }
 
-  string pbc_cli_list; parse("--box",pbc_cli_list);
-  bool pbc_cli_given=false;
-  vector<double> pbc_cli_box(9,0.0);
-  if(pbc_cli_list.length()>0) {
-    pbc_cli_given=true;
-    vector<string> words=Tools::getWords(pbc_cli_list,",");
-    if(words.size()==3){
-      for(int i=0;i<3;i++) sscanf(words[i].c_str(),"%lf",&(pbc_cli_box[4*i]));
-    } else if(words.size()==9) {
-      for(int i=0;i<9;i++) sscanf(words[i].c_str(),"%lf",&(pbc_cli_box[i]));
-    } else {
-      string msg="ERROR: cannot parse command-line box "+pbc_cli_list;
-      fprintf(stderr,"%s\n",msg.c_str());
-      return 1;
-    }
+     string pbc_cli_list; parse("--box",pbc_cli_list);
+     if(pbc_cli_list.length()>0) {
+       pbc_cli_given=true;
+       vector<string> words=Tools::getWords(pbc_cli_list,",");
+       if(words.size()==3){
+         for(int i=0;i<3;i++) sscanf(words[i].c_str(),"%lf",&(pbc_cli_box[4*i]));
+       } else if(words.size()==9) {
+         for(int i=0;i<9;i++) sscanf(words[i].c_str(),"%lf",&(pbc_cli_box[i]));
+       } else {
+         string msg="ERROR: cannot parse command-line box "+pbc_cli_list;
+         fprintf(stderr,"%s\n",msg.c_str());
+         return 1;
+       }
 
+     }
   }
-  
+
   plumed_massert(!(debug_dd&debug_pd),"cannot use debug-dd and debug-pd at the same time");
   if(debug_pd || debug_dd) plumed_massert(PlumedCommunicator::initialized(),"needs mpi for debug-pd");
 
-  if(trajectoryFile.length()==0){
-    string msg="ERROR: please specify a trajectory";
-    fprintf(stderr,"%s\n",msg.c_str());
-    return 1;
-  }
-
   Plumed p;
   int rr=sizeof(real);
   p.cmd("setRealPrecision",&rr);
-  int checknatoms=0;
+  int checknatoms=-1;
+  int plumedStopCondition=0;
+  p.cmd("setStopFlag",&plumedStopCondition);
   int step=0;
+  if(PlumedCommunicator::initialized()){
+    if(multi>1){
+      if(intracomm.Get_rank()==0) p.cmd("GREX setMPIIntercomm",&intercomm.Get_comm());
+      p.cmd("GREX setMPIIntracomm",&intracomm.Get_comm());
+      p.cmd("GREX init");
+    } 
+    p.cmd("setMPIComm",&intracomm.Get_comm());
+  } 
+  p.cmd("setMDLengthUnits",&units.getLength());
+  p.cmd("setMDEngine","driver");
+  p.cmd("setTimestep",&timestep);
+  p.cmd("setPlumedDat",plumedFile.c_str());
+  p.cmd("setLog",out);
 
   if(debug_grex){
     string n;
@@ -227,29 +243,29 @@ int CLToolDriver<real>::main(FILE* in,FILE*out,PlumedCommunicator& pc){
     trajectoryFile+="."+n;
   }
 
-  FILE* fp;
-  if (trajectoryFile=="-") 
-    fp=in;
-  else {
-    fp=fopen(trajectoryFile.c_str(),"r");
-    if(!fp){
-      string msg="ERROR: Error opening XYZ file "+trajectoryFile;
-      fprintf(stderr,"%s\n",msg.c_str());
-      return 1;
-    }
-  }
-    
-
-  FILE* fp_forces=NULL;
-  if(dumpforces.length()>0){
-    if(PlumedCommunicator::initialized() && pc.Get_size()>1){
-      string n;
-      Tools::convert(pc.Get_rank(),n);
-      dumpforces+="."+n;
-    }
-    fp_forces=fopen(dumpforces.c_str(),"w");
+  FILE* fp=NULL; FILE* fp_forces=NULL;
+  if(!noatoms){
+     if (trajectoryFile=="-") 
+       fp=in;
+     else {
+       fp=fopen(trajectoryFile.c_str(),"r");
+       if(!fp){
+         string msg="ERROR: Error opening XYZ file "+trajectoryFile;
+         fprintf(stderr,"%s\n",msg.c_str());
+         return 1;
+       }
+     }
+
+     if(dumpforces.length()>0){
+       if(PlumedCommunicator::initialized() && pc.Get_size()>1){
+         string n;
+         Tools::convert(pc.Get_rank(),n);
+         dumpforces+="."+n;
+       }
+       fp_forces=fopen(dumpforces.c_str(),"w");
+     }
   }
-  
+
   std::string line;
   std::vector<real> coordinates;
   std::vector<real> forces;
@@ -272,29 +288,16 @@ int CLToolDriver<real>::main(FILE* in,FILE*out,PlumedCommunicator& pc){
 // random stream to choose decompositions
   Random rnd;
 
-  while(Tools::getline(fp,line)){
+  while(true){
+    if(!noatoms){
+       if(!Tools::getline(fp,line)) break;
+    } else if ( plumedStopCondition ) break;
 
     int natoms;
     bool ok;
     bool first_step=false;
-    sscanf(line.c_str(),"%d",&natoms);
-    if(checknatoms==0){
-      checknatoms=natoms;
-      if(PlumedCommunicator::initialized()){
-        if(multi>1){
-          if(intracomm.Get_rank()==0) p.cmd("GREX setMPIIntercomm",&intercomm.Get_comm());
-          p.cmd("GREX setMPIIntracomm",&intracomm.Get_comm());
-          p.cmd("GREX init");
-        }
-        p.cmd("setMPIComm",&intracomm.Get_comm());
-      }
-      p.cmd("setMDLengthUnits",&units.getLength());
-      p.cmd("setNatoms",&natoms);
-      p.cmd("setMDEngine","driver");
-      p.cmd("setTimestep",&timestep);
-      p.cmd("setPlumedDat",plumedFile.c_str());
-      p.cmd("setLog",out);
-      p.cmd("init");
+    if(!noatoms) sscanf(line.c_str(),"%d",&natoms);
+    if(checknatoms<0 && !noatoms){
       pd_nlocal=natoms;
       pd_start=0;
       first_step=true;
@@ -309,7 +312,13 @@ int CLToolDriver<real>::main(FILE* in,FILE*out,PlumedCommunicator& pc){
           charges[index]=pdb.getBeta()[i];
         }
       }
-
+    } else if( checknatoms<0 && noatoms ){ 
+      natoms=0; 
+    }
+    if( checknatoms<0 ){
+      checknatoms=natoms;
+      p.cmd("setNatoms",&natoms);
+      p.cmd("init");
     }
     plumed_massert(checknatoms==natoms,"number of atom changed");
 
@@ -371,61 +380,63 @@ int CLToolDriver<real>::main(FILE* in,FILE*out,PlumedCommunicator& pc){
       }
     }
 
-    ok=Tools::getline(fp,line);
-    plumed_massert(ok,"premature end of file");
-
-    std::vector<double> celld(9,0.0);
-    if(pbc_cli_given==false) {
-      std::vector<std::string> words;
-      words=Tools::getWords(line);
-      if(words.size()==3){
-	sscanf(line.c_str(),"%lf %lf %lf",&celld[0],&celld[4],&celld[8]);
-      } else if(words.size()==9){
-	sscanf(line.c_str(),"%lf %lf %lf %lf %lf %lf %lf %lf %lf",
-	       &celld[0], &celld[1], &celld[2],
-	       &celld[3], &celld[4], &celld[5],
-	       &celld[6], &celld[7], &celld[8]);
-      } else plumed_merror("needed box in second line");
-    } else {			// from command line
-      celld=pbc_cli_box;
-    }
-    for(unsigned i=0;i<9;i++)cell[i]=real(celld[i]);
-
-    // Read coordinates
-    for(int i=0;i<natoms;i++){
-      ok=Tools::getline(fp,line);
-      plumed_massert(ok,"premature end of file");
-      char dummy[1000];
-      double cc[3];
-      std::sscanf(line.c_str(),"%s %lf %lf %lf",dummy,&cc[0],&cc[1],&cc[2]);
-      if(!debug_pd || ( i>=pd_start && i<pd_start+pd_nlocal) ){
-        coordinates[3*i]=real(cc[0]);
-        coordinates[3*i+1]=real(cc[1]);
-        coordinates[3*i+2]=real(cc[2]);
-      }
-      if(debug_dd){
-        for(int i=0;i<dd_nlocal;++i){
-          int kk=dd_gatindex[i];
-          dd_coordinates[3*i+0]=coordinates[3*kk+0];
-          dd_coordinates[3*i+1]=coordinates[3*kk+1];
-          dd_coordinates[3*i+2]=coordinates[3*kk+2];
-        }
-      }
-    }
+    if(!noatoms){
+       ok=Tools::getline(fp,line);
+       plumed_massert(ok,"premature end of file");
+
+       std::vector<double> celld(9,0.0);
+       if(pbc_cli_given==false) {
+         std::vector<std::string> words;
+         words=Tools::getWords(line);
+         if(words.size()==3){
+           sscanf(line.c_str(),"%lf %lf %lf",&celld[0],&celld[4],&celld[8]);
+         } else if(words.size()==9){
+           sscanf(line.c_str(),"%lf %lf %lf %lf %lf %lf %lf %lf %lf",
+                  &celld[0], &celld[1], &celld[2],
+                  &celld[3], &celld[4], &celld[5],
+                  &celld[6], &celld[7], &celld[8]);
+         } else plumed_merror("needed box in second line");
+       } else {			// from command line
+         celld=pbc_cli_box;
+       }
+       for(unsigned i=0;i<9;i++)cell[i]=real(celld[i]);
+
+       // Read coordinates
+       for(int i=0;i<natoms;i++){
+         ok=Tools::getline(fp,line);
+         plumed_massert(ok,"premature end of file");
+         char dummy[1000];
+         double cc[3];
+         std::sscanf(line.c_str(),"%s %lf %lf %lf",dummy,&cc[0],&cc[1],&cc[2]);
+         if(!debug_pd || ( i>=pd_start && i<pd_start+pd_nlocal) ){
+           coordinates[3*i]=real(cc[0]);
+           coordinates[3*i+1]=real(cc[1]);
+           coordinates[3*i+2]=real(cc[2]);
+         }
+         if(debug_dd){
+           for(int i=0;i<dd_nlocal;++i){
+             int kk=dd_gatindex[i];
+             dd_coordinates[3*i+0]=coordinates[3*kk+0];
+             dd_coordinates[3*i+1]=coordinates[3*kk+1];
+             dd_coordinates[3*i+2]=coordinates[3*kk+2];
+           }
+         }
+       }
 
-   if(debug_dd){
-     p.cmd("setForces",&dd_forces[0]);
-     p.cmd("setPositions",&dd_coordinates[0]);
-     p.cmd("setMasses",&dd_masses[0]);
-     p.cmd("setCharges",&dd_charges[0]);
-   } else {
-     p.cmd("setForces",&forces[3*pd_start]);
-     p.cmd("setPositions",&coordinates[3*pd_start]);
-     p.cmd("setMasses",&masses[pd_start]);
-     p.cmd("setCharges",&charges[pd_start]);
+       if(debug_dd){
+         p.cmd("setForces",&dd_forces[0]);
+         p.cmd("setPositions",&dd_coordinates[0]);
+         p.cmd("setMasses",&dd_masses[0]);
+         p.cmd("setCharges",&dd_charges[0]);
+       } else {
+         p.cmd("setForces",&forces[3*pd_start]);
+         p.cmd("setPositions",&coordinates[3*pd_start]);
+         p.cmd("setMasses",&masses[pd_start]);
+         p.cmd("setCharges",&charges[pd_start]);
+       }
+       p.cmd("setBox",&cell[0]);
+       p.cmd("setVirial",&virial[0]);
    }
-   p.cmd("setBox",&cell[0]);
-   p.cmd("setVirial",&virial[0]);
    p.cmd("setStep",&step);
    p.cmd("calc");
 
diff --git a/src/tools/PlumedFile.cpp b/src/tools/PlumedFile.cpp
index 18db9242066db9e2104a743d47e73cea4a3ed729..36459164436a194087a04259b969ab4cca3fd2b0 100644
--- a/src/tools/PlumedFile.cpp
+++ b/src/tools/PlumedFile.cpp
@@ -492,15 +492,18 @@ PlumedIFile& PlumedIFile::scanField(Value* val){
 }
 
 PlumedIFile& PlumedIFile::scanField(){
-  for(unsigned i=0;i<fields.size();i++){
-    plumed_assert(fields[i].read);
+  if(!ignoreFields){
+     for(unsigned i=0;i<fields.size();i++){
+       plumed_assert(fields[i].read);
+     }
   }
   inMiddleOfField=false;
   return *this;
 }
 
 PlumedIFile::PlumedIFile():
-  inMiddleOfField(false)
+  inMiddleOfField(false),
+  ignoreFields(false)
 {
 }
 
@@ -537,3 +540,7 @@ void PlumedIFile::reset(bool reset){
  if(!reset) clearerr(fp);
  return;
 } 
+
+void PlumedIFile::allowIgnoredFields(){
+  ignoreFields=true;
+}
diff --git a/src/tools/PlumedFile.h b/src/tools/PlumedFile.h
index a402c4427db57ef6b7fbb5cc7ba17668a736316d..430553be851de6587c06fdc0cb9bcfc0ef47051c 100644
--- a/src/tools/PlumedFile.h
+++ b/src/tools/PlumedFile.h
@@ -278,6 +278,8 @@ public virtual PlumedFileBase{
   std::vector<Field> fields;
 /// Flag set in the middle of a field reading
   bool inMiddleOfField;
+/// Set to true if you want to allow fields to be ignored in the read in file
+  bool ignoreFields;
 /// Advance to next field (= read one line)
   PlumedIFile& advanceField();
 /// Find field index by name
@@ -314,6 +316,8 @@ Typically used as
   bool FieldExist(const std::string& s);
 /// Read in a value
   PlumedIFile& scanField(Value* val);
+/// Allow some of the fields in the input to be ignored
+  void allowIgnoredFields();
 };
 
 /// Write using << syntax