diff --git a/tools/i-pi/.vimrc b/tools/i-pi/.vimrc
new file mode 100644
index 0000000000000000000000000000000000000000..fd7d41af2783cd72c298cb6de86eee60563b3512
--- /dev/null
+++ b/tools/i-pi/.vimrc
@@ -0,0 +1,4 @@
+set tabstop=3
+set softtabstop=3
+set shiftwidth=3
+set expandtab
diff --git a/tools/i-pi/MANIFEST.in b/tools/i-pi/MANIFEST.in
new file mode 100644
index 0000000000000000000000000000000000000000..9561fb1061f6de114633c70871232a6896dcbe8a
--- /dev/null
+++ b/tools/i-pi/MANIFEST.in
@@ -0,0 +1 @@
+include README.rst
diff --git a/tools/i-pi/README.rst b/tools/i-pi/README.rst
new file mode 100644
index 0000000000000000000000000000000000000000..8d10b343f8392c3c2904ac1c04ff33b823bff08b
--- /dev/null
+++ b/tools/i-pi/README.rst
@@ -0,0 +1,49 @@
+i-PI V1.0 -- LAMMPS 
+-------------------
+
+A Python interface for ab initio path integral molecular dynamics simulations. 
+i-PI is composed of a Python server (i-pi itself, that does not need to be 
+compiled but only requires a relatively recent version of Python and Numpy)
+that propagates the (path integral) dynamics of the nuclei, and of an external
+code that acts as client and computes the electronic energy and forces.
+
+This is typically a patched version of an electronic structure code, but a 
+simple self-contained Fortran driver that implements Lennard-Jones and 
+Silveira-Goldman potentials is included for test purposes.
+
+This folder contains a stripped-down version to be used with LAMMPS, and might
+not contain all the features of the latest version. Please see 
+[http://epfl-cosmo.github.io/gle4md/index.html?page=ipi] or
+[http://github.com/i-pi/i-pi] to obtain an up-to-date version.
+
+
+Quick Installation and Test 
+---------------------------
+
+Follow these instruction to test i-PI. These assume to be run from a Linux 
+environment, with a recent version of Python, Numpy and gfortran, and that 
+the terminal is initially in the i-pi package directory (the directory 
+containing this file).
+
+* Generate the driver code
+
+::
+
+$ cd driver
+$ make
+$ cd ..
+
+* Run one of the examples
+
+This will first start the wrapper in the background, redirecting the output on 
+a log file, then run a couple of instances of the driver code and then follow
+the progress of the wrapper by monitoring the log file::
+
+$ cd examples/tutorial/tutorial-1/
+$ ../../../i-pi tutorial-1.xml > log &
+$ ../../../drivers/driver.x -h localhost -p 31415 -m sg -o 15 &
+$ ../../../drivers/driver.x -h localhost -p 31415 -m sg -o 15 &
+$ tail -f log
+
+The monitoring can be interrupted with ``CTRL+C`` when the run has finished (5000 steps)
+
diff --git a/tools/i-pi/drivers/LJ.f90 b/tools/i-pi/drivers/LJ.f90
new file mode 100644
index 0000000000000000000000000000000000000000..342425f29e2167db1e0e2f7cb012a7aaba86e17d
--- /dev/null
+++ b/tools/i-pi/drivers/LJ.f90
@@ -0,0 +1,215 @@
+! This performs the calculations necessary to run a Lennard-Jones (LJ) 
+! simulation.
+! 
+! Copyright (C) 2013, Joshua More and Michele Ceriotti
+! 
+! Permission is hereby granted, free of charge, to any person obtaining
+! a copy of this software and associated documentation files (the
+! "Software"), to deal in the Software without restriction, including
+! without limitation the rights to use, copy, modify, merge, publish,
+! distribute, sublicense, and/or sell copies of the Software, and to
+! permit persons to whom the Software is furnished to do so, subject to
+! the following conditions:
+! 
+! The above copyright notice and this permission notice shall be included
+! in all copies or substantial portions of the Software.
+! 
+! THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+! EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+! MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+! IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+! CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+! TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+! SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+!
+!
+! This contains the functions that calculate the potential, forces and
+! virial tensor of a single-component LJ system.
+! Includes functions which calculate the long-range correction terms for a
+! simulation with a sharp nearest-neighbour cut-off.
+!
+! Functions:
+!    LJ_functions: Calculates the LJ pair potential and the magnitude of the
+!       forces acting on a pair of atoms.
+!    LJ_fij: Calculates the LJ pair potential and force vector for the
+!       interaction of a pair of atoms.
+!    LJ_longrange: Calculates the long range correction to the potential
+!       and virial.
+!    LJ_getall: Calculates the potential and virial of the system and the
+!       forces acting on all the atoms.
+
+      MODULE LJ
+         USE DISTANCE
+      IMPLICIT NONE
+
+      DOUBLE PRECISION, PARAMETER :: four_tau_by_3 = 8.3775804095727811d0 
+
+      CONTAINS
+
+         SUBROUTINE LJ_functions(sigma, eps, r, pot, force)
+            ! Calculates the magnitude of the LJ force and potential between
+            ! a pair of atoms at a given distance from each other.
+            !
+            ! Args:
+            !    sigma: The LJ distance parameter.
+            !    eps: The LJ energy parameter.
+            !    r: The separation of the atoms.
+            !    pot: The LJ interaction potential.
+            !    force: The magnitude of the LJ force.
+
+            DOUBLE PRECISION, INTENT(IN) :: sigma
+            DOUBLE PRECISION, INTENT(IN) :: eps
+            DOUBLE PRECISION, INTENT(IN) :: r
+            DOUBLE PRECISION, INTENT(OUT) :: pot
+            DOUBLE PRECISION, INTENT(OUT) :: force
+
+            DOUBLE PRECISION sigma_by_r6
+
+            sigma_by_r6 = sigma/r
+            sigma_by_r6 = sigma_by_r6*sigma_by_r6*sigma_by_r6
+            sigma_by_r6 = sigma_by_r6*sigma_by_r6
+
+            pot = 4*eps*(sigma_by_r6*(sigma_by_r6 - 1))
+            force = 24*eps*(sigma_by_r6*(2*sigma_by_r6 - 1)/r)
+
+         END SUBROUTINE
+
+         SUBROUTINE LJ_fij(sigma, eps, rij, r, pot, fij)
+            ! This calculates the LJ potential energy and the magnitude and
+            ! direction of the force acting on a pair of atoms.
+            !
+            ! Args:
+            !    sigma: The LJ distance parameter.
+            !    eps: The LJ energy parameter.
+            !    rij: The vector joining the two atoms.
+            !    r: The separation of the two atoms.
+            !    pot: The LJ interaction potential.
+            !    fij: The LJ force vector.
+
+            DOUBLE PRECISION, INTENT(IN) :: sigma
+            DOUBLE PRECISION, INTENT(IN) :: eps
+            DOUBLE PRECISION, DIMENSION(3), INTENT(IN) :: rij
+            DOUBLE PRECISION, INTENT(IN) :: r
+            DOUBLE PRECISION, INTENT(OUT) :: pot
+            DOUBLE PRECISION, DIMENSION(3), INTENT(OUT) :: fij
+   
+            DOUBLE PRECISION f_tot
+   
+            CALL LJ_functions(sigma, eps, r, pot, f_tot)
+            fij = f_tot*rij/r
+   
+         END SUBROUTINE
+
+         SUBROUTINE LJ_longrange(rc, sigma, eps, natoms, volume, pot_lr, vir_lr)
+            ! Calculates the long range correction to the total potential and
+            ! virial pressure.
+            !
+            ! Uses the tail correction for a sharp cut-off, with no smoothing
+            ! function, as derived in Martyna and Hughes, Journal of Chemical
+            ! Physics, 110, 3275, (1999).
+            !
+            ! Args:
+            !    rc: The cut-off radius.
+            !    sigma: The LJ distance parameter.
+            !    eps: The LJ energy parameter.
+            !    natoms: The number of atoms in the system.
+            !    volume: The volume of the system box.
+            !    pot_lr: The tail correction to the LJ interaction potential.
+            !    vir_lr: The tail correction to the LJ virial pressure.
+
+            DOUBLE PRECISION, INTENT(IN) :: rc
+            DOUBLE PRECISION, INTENT(IN) :: sigma
+            DOUBLE PRECISION, INTENT(IN) :: eps
+            INTEGER, INTENT(IN) :: natoms
+            DOUBLE PRECISION, INTENT(IN) :: volume
+            DOUBLE PRECISION, INTENT(OUT) :: pot_lr
+            DOUBLE PRECISION, INTENT(OUT) :: vir_lr
+
+            DOUBLE PRECISION sbyr, s3byr3, s6byr3, s6byr6, prefactor
+
+            sbyr = sigma/rc
+            s3byr3 = sbyr*sbyr*sbyr
+            s6byr6 = s3byr3*s3byr3
+            prefactor = four_tau_by_3*natoms*natoms*eps/volume
+            prefactor = prefactor*s3byr3*sigma*sigma*sigma
+
+            pot_lr = prefactor*(s6byr6/3-1)
+            vir_lr = prefactor*(s6byr6-1) + pot_lr
+
+         END SUBROUTINE
+
+         SUBROUTINE LJ_getall(rc, sigma, eps, natoms, atoms, cell_h, cell_ih, index_list, n_list, pot, forces, virial)
+            ! Calculates the LJ potential energy and virial and the forces 
+            ! acting on all the atoms.
+            !
+            ! Args:
+            !    rc: The cut-off radius.
+            !    sigma: The LJ distance parameter.
+            !    eps: The LJ energy parameter.
+            !    natoms: The number of atoms in the system.
+            !    atoms: A vector holding all the atom positions.
+            !    cell_h: The simulation box cell vector matrix.
+            !    cell_ih: The inverse of the simulation box cell vector matrix.
+            !    index_list: A array giving the last index of n_list that 
+            !       gives the neighbours of a given atom.
+            !    n_list: An array giving the indices of the atoms that neighbour
+            !       the atom determined by index_list.
+            !    pot: The total potential energy of the system.
+            !    forces: An array giving the forces acting on all the atoms.
+            !    virial: The virial tensor, not divided by the volume.
+
+            DOUBLE PRECISION, INTENT(IN) :: rc
+            DOUBLE PRECISION, INTENT(IN) :: sigma
+            DOUBLE PRECISION, INTENT(IN) :: eps
+            INTEGER, INTENT(IN) :: natoms
+            DOUBLE PRECISION, DIMENSION(natoms,3), INTENT(IN) :: atoms
+            DOUBLE PRECISION, DIMENSION(3,3), INTENT(IN) :: cell_h
+            DOUBLE PRECISION, DIMENSION(3,3), INTENT(IN) :: cell_ih
+            INTEGER, DIMENSION(natoms), INTENT(IN) :: index_list
+            INTEGER, DIMENSION(natoms*(natoms-1)/2), INTENT(IN) :: n_list
+            DOUBLE PRECISION, INTENT(OUT) :: pot
+            DOUBLE PRECISION, DIMENSION(natoms,3), INTENT(OUT) :: forces
+            DOUBLE PRECISION, DIMENSION(3,3), INTENT(OUT) :: virial
+
+            INTEGER i, j, k, l, start
+            DOUBLE PRECISION, DIMENSION(3) :: fij, rij
+            DOUBLE PRECISION r2, pot_ij, pot_lr, vir_lr, volume
+
+            forces = 0.0d0
+            pot = 0.0d0
+            virial = 0.0d0
+
+            start = 1
+
+            DO i = 1, natoms - 1
+               ! Only loops over the neigbour list, not all the atoms.
+               DO j = start, index_list(i)
+                  CALL vector_separation(cell_h, cell_ih, atoms(i,:), atoms(n_list(j),:), rij, r2)
+                  IF (r2 < rc*rc) THEN ! Only calculates contributions between neighbouring particles.
+                     CALL LJ_fij(sigma, eps, rij, sqrt(r2), pot_ij, fij)
+
+                     forces(i,:) = forces(i,:) + fij
+                     forces(n_list(j),:) = forces(n_list(j),:) - fij
+                     pot = pot + pot_ij
+                     DO k = 1, 3
+                        DO l = k, 3
+                           ! Only the upper triangular elements calculated.
+                           virial(k,l) = virial(k,l) + fij(k)*rij(l)
+                        ENDDO
+                     ENDDO
+                  ENDIF
+               ENDDO
+               start = index_list(i) + 1
+            ENDDO
+
+            ! Assuming an upper-triangular vector matrix for the simulation box.
+            volume = cell_h(1,1)*cell_h(2,2)*cell_h(3,3)
+            CALL LJ_longrange(rc, sigma, eps, natoms, volume, pot_lr, vir_lr)
+            pot = pot + pot_lr
+            DO k = 1, 3
+               virial(k,k) = virial(k,k) + vir_lr
+            ENDDO
+
+         END SUBROUTINE
+
+      END MODULE
diff --git a/tools/i-pi/drivers/Makefile b/tools/i-pi/drivers/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..ed0336f689448277afc2449cb276571d1c1ac137
--- /dev/null
+++ b/tools/i-pi/drivers/Makefile
@@ -0,0 +1,42 @@
+# Makefile for the driver tests
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+# 
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+# 
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ 
+.PHONY: all
+
+SOURCES=$(shell ls *.f90)
+MODULES=distance.f90 LJ.f90 SG.f90
+OBJECTS=$(SOURCES:.f90=.o) sockets.o
+all: modules sockets.o driver.x
+
+modules: $(MODULES)
+	gfortran -O3 -c $(MODULES)
+
+sockets.o: sockets.c
+	gcc -c -o sockets.o sockets.c
+
+driver.x: $(OBJECTS)
+	gfortran -O3 -o driver.x $(OBJECTS)
+
+%.o: %.f90
+	gfortran -O3 -c $<
+
+clean:
+	rm *.o *.mod *.x
diff --git a/tools/i-pi/drivers/README b/tools/i-pi/drivers/README
new file mode 100644
index 0000000000000000000000000000000000000000..563cbce9ce0e6481c21a411cef75b08a923346a3
--- /dev/null
+++ b/tools/i-pi/drivers/README
@@ -0,0 +1,14 @@
+ -- Driver code directory --
+
+ * This gives simple test driver codes.
+
+ * Files:
+   - LJ.f90: Calculates the Lennard-Jones potential/forces/virial.
+   - SG.f90: Calculates the Silvera-Goldman potential/forces/virial.
+   - distance.f90: Deals with calculating the separation between atoms and
+      the neighbour list calculation.
+   - sockets.c: Contains the functions to create the client socket and read from
+      and write to it.
+   - driver.f90: Socket interface for the driver codes.
+   - Makefile: A makefile that which compiles all the fortran code as 
+      necessary.
diff --git a/tools/i-pi/drivers/SG.f90 b/tools/i-pi/drivers/SG.f90
new file mode 100644
index 0000000000000000000000000000000000000000..42d3e4945d01644e2f1671dcd5e6985835362fc8
--- /dev/null
+++ b/tools/i-pi/drivers/SG.f90
@@ -0,0 +1,283 @@
+! This performs the calculations necessary to run a simulation using a
+! Silvera-Goldman (SG) potential for para-hydrogen. See I. Silvera and V.
+! Goldman, J. Chem. Phys., 69, 4209 (1978).
+! 
+! Copyright (C) 2013, Joshua More and Michele Ceriotti
+! 
+! Permission is hereby granted, free of charge, to any person obtaining
+! a copy of this software and associated documentation files (the
+! "Software"), to deal in the Software without restriction, including
+! without limitation the rights to use, copy, modify, merge, publish,
+! distribute, sublicense, and/or sell copies of the Software, and to
+! permit persons to whom the Software is furnished to do so, subject to
+! the following conditions:
+! 
+! The above copyright notice and this permission notice shall be included
+! in all copies or substantial portions of the Software.
+! 
+! THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+! EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+! MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+! IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+! CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+! TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+! SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+!
+!
+! This contains the functions that calculate the potential, forces and
+! virial tensor of liquid para-hydrogen
+! Includes functions which calculate the long-range correction terms for a
+! simulation with a sharp nearest-neighbour cut-off.
+!
+! Functions:
+!    f_c: Calculates the damping function for the dispersive interactions 
+!       at short range.
+!    exp_func: Calculates the short range repulsive part of the SG potential.
+!    SG_functions: Calculates the SG pair potential and the magnitude of the
+!       forces acting on a pair of atoms.
+!    SG_fij: Calculates the SG pair potential and force vector for the
+!       interaction of a pair of atoms.
+!    SG_longrange: Calculates the long range correction to the potential
+!       and virial.
+!    SG_getall: Calculates the potential and virial of the system and the
+!       forces acting on all the atoms.
+
+      MODULE SG
+         USE DISTANCE
+      IMPLICIT NONE
+
+      ! Parameters of the SG potential. This potential is of the form:
+      ! V(r) = exp(alpha - beta*r - delta*r**2) - 
+      !        (C_6/r**6 + C_8/r**8 - C_9/r**9 + C_10/r**10)*f_c(r)
+      ! where f_c(r) = exp(-(rc_exp/r - 1)**2) if r <= rc_exp
+      !            = 1 otherwise
+      DOUBLE PRECISION, PARAMETER :: tau = 6.2831853071795862d0 !If you don't know why I used this name, you're not a real nerd
+      DOUBLE PRECISION, PARAMETER :: alpha = 1.713d0
+      DOUBLE PRECISION, PARAMETER :: beta = 1.5671d0
+      DOUBLE PRECISION, PARAMETER :: delta = 0.00993d0
+      DOUBLE PRECISION, PARAMETER :: delta_diff = delta*2.0d0
+      DOUBLE PRECISION, PARAMETER :: rc_exp = 8.32d0
+      DOUBLE PRECISION, PARAMETER :: C_6 = 12.14d0
+      DOUBLE PRECISION, PARAMETER :: C_8 = 215.2d0
+      DOUBLE PRECISION, PARAMETER :: C_9 = 143.1d0
+      DOUBLE PRECISION, PARAMETER :: C_10 = 4813.9d0
+      DOUBLE PRECISION, PARAMETER :: C_6_diff = C_6*6d0
+      DOUBLE PRECISION, PARAMETER :: C_8_diff = C_8*8d0
+      DOUBLE PRECISION, PARAMETER :: C_9_diff = C_9*9d0
+      DOUBLE PRECISION, PARAMETER :: C_10_diff = C_10*10d0
+      DOUBLE PRECISION, PARAMETER :: C_6_int = C_6/3d0
+      DOUBLE PRECISION, PARAMETER :: C_8_int = C_8/5d0
+      DOUBLE PRECISION, PARAMETER :: C_9_int = C_9/6d0
+      DOUBLE PRECISION, PARAMETER :: C_10_int = C_10/7d0
+
+      CONTAINS
+
+         SUBROUTINE f_c(r, long_range, long_range_diff)
+            ! Calculates the damping function for the dispersive interactions 
+            ! at short range. 
+            !
+            ! Args:
+            !    r: The separation of the atoms.
+            !    long_range: The value of the damping function.
+            !    long_range_diff: The differential of the damping function 
+            !       with respect to r.
+
+            DOUBLE PRECISION, INTENT(IN) :: r
+            DOUBLE PRECISION, INTENT(OUT) :: long_range
+            DOUBLE PRECISION, INTENT(OUT) :: long_range_diff
+
+            DOUBLE PRECISION dist_frac
+
+            IF (r > rc_exp) THEN
+               long_range = 1.0d0
+               long_range_diff = 0.0d0
+            ELSE
+               dist_frac = rc_exp/r - 1.0d0
+               long_range = dexp(-(dist_frac)**2)
+               long_range_diff = 2.0d0*dist_frac*rc_exp*long_range/(r*r)
+            END IF
+
+         END SUBROUTINE
+
+         SUBROUTINE exp_func(r, pot, force)
+            ! Calculates the repulsive part of the SG force and potential 
+            ! between a pair of atoms at a given distance from each other.
+            !
+            ! Args:
+            !    r: The separation of the atoms.
+            !    pot: The repulsive part of the potential energy.
+            !    force: The magnitude of the repulsive part of the force.
+
+            DOUBLE PRECISION, INTENT(IN) :: r
+            DOUBLE PRECISION, INTENT(OUT) :: pot
+            DOUBLE PRECISION, INTENT(OUT) :: force
+
+            pot = dexp(alpha - r*(beta + delta*r))
+            force = (beta + delta_diff*r)*pot
+
+         END SUBROUTINE
+
+         SUBROUTINE SG_functions(r, pot, force)
+            ! Calculates the magnitude of the SG force and potential between
+            ! a pair of atoms at a given distance from each other.
+            !
+            ! Args:
+            !    r: The separation of the atoms.
+            !    pot: The SG interaction potential.
+            !    force: The magnitude of the SG force.
+
+            DOUBLE PRECISION, INTENT(IN) :: r
+            DOUBLE PRECISION, INTENT(OUT) :: pot
+            DOUBLE PRECISION, INTENT(OUT) :: force
+
+            DOUBLE PRECISION long_range, long_range_diff, disp, disp_diff, exp_pot, exp_force
+            DOUBLE PRECISION onr3, onr6, onr9, onr10
+
+            onr3 = 1/(r*r*r)
+            onr6 = onr3*onr3
+            onr9 = onr6*onr3
+            onr10 = onr9/r
+
+            CALL exp_func(r, exp_pot, exp_force)
+            CALL f_c(r, long_range, long_range_diff)
+      
+            disp = -(C_6*onr6 + C_8*onr9*r - C_9*onr9 + C_10*onr10)
+            disp_diff = (C_6_diff*onr6/r + C_8_diff*onr9 - C_9_diff*onr10 + C_10_diff*onr10/r)
+
+            pot = exp_pot + disp*long_range
+            force = exp_force - disp_diff*long_range - disp*long_range_diff
+
+         END SUBROUTINE
+
+         SUBROUTINE SG_fij(rij, r, pot, fij)
+            ! This calculates the SG potential energy and the magnitude and
+            ! direction of the force acting on a pair of atoms.
+            !
+            ! Args:
+            !    rij: The vector joining the two atoms.
+            !    r: The separation of the two atoms.
+            !    pot: The SG interaction potential.
+            !    fij: The SG force vector.
+
+            DOUBLE PRECISION, DIMENSION(3), INTENT(IN) :: rij
+            DOUBLE PRECISION, INTENT(IN) :: r
+            DOUBLE PRECISION, INTENT(OUT) :: pot
+            DOUBLE PRECISION, DIMENSION(3), INTENT(OUT) :: fij
+   
+            DOUBLE PRECISION f_tot
+   
+            CALL SG_functions(r, pot, f_tot)
+            fij = f_tot*rij/r
+   
+         END SUBROUTINE
+
+         SUBROUTINE SG_longrange(rc, natoms, volume, pot_lr, vir_lr)
+            ! Calculates the long range correction to the total potential and
+            ! virial pressure.
+            !
+            ! Uses the tail correction for a sharp cut-off, with no smoothing
+            ! function, as derived in Martyna and Hughes, Journal of Chemical
+            ! Physics, 110, 3275, (1999).
+            !
+            ! Note that we will assume that rc > rc_exp, and that 
+            ! exp(alpha - beta*rc - delta*rc**2) << 0, so we can neglect the
+            ! contribution of the repulsive potential and the dispersion 
+            ! damping function in the long range correction terms.
+            !
+            ! Args:
+            !    rc: The cut-off radius.
+            !    natoms: The number of atoms in the system.
+            !    volume: The volume of the system box.
+            !    pot_lr: The tail correction to the SG interaction potential.
+            !    vir_lr: The tail correction to the SG virial pressure.
+
+            DOUBLE PRECISION, INTENT(IN) :: rc
+            INTEGER, INTENT(IN) :: natoms
+            DOUBLE PRECISION, INTENT(IN) :: volume
+            DOUBLE PRECISION, INTENT(OUT) :: pot_lr
+            DOUBLE PRECISION, INTENT(OUT) :: vir_lr
+
+            DOUBLE PRECISION onr3, onr5, onr6, onr7, prefactor
+
+            onr3 = 1/(rc*rc*rc)
+            onr6 = onr3*onr3
+            onr5 = onr6*rc
+            onr7 = onr6/rc
+            prefactor = tau*natoms*natoms/volume
+
+            pot_lr = prefactor*(-C_6_int*onr3 - C_8_int*onr5 + C_9_int*onr6 - C_10_int*onr7)
+            vir_lr = prefactor*(-C_6*onr3 - C_8*onr5 + C_9*onr6 - C_10*onr7)/3 + pot_lr
+
+         END SUBROUTINE
+
+         SUBROUTINE SG_getall(rc, natoms, atoms, cell_h, cell_ih, index_list, n_list, pot, forces, virial)
+            ! Calculates the SG potential energy and virial and the forces 
+            ! acting on all the atoms.
+            !
+            ! Args:
+            !    rc: The cut-off radius.
+            !    natoms: The number of atoms in the system.
+            !    atoms: A vector holding all the atom positions.
+            !    cell_h: The simulation box cell vector matrix.
+            !    cell_ih: The inverse of the simulation box cell vector matrix.
+            !    index_list: A array giving the last index of n_list that 
+            !       gives the neighbours of a given atom.
+            !    n_list: An array giving the indices of the atoms that neighbour
+            !       the atom determined by index_list.
+            !    pot: The total potential energy of the system.
+            !    forces: An array giving the forces acting on all the atoms.
+            !    virial: The virial tensor, not divided by the volume.
+
+            DOUBLE PRECISION, INTENT(IN) :: rc
+            INTEGER, INTENT(IN) :: natoms
+            DOUBLE PRECISION, DIMENSION(natoms,3), INTENT(IN) :: atoms
+            DOUBLE PRECISION, DIMENSION(3,3), INTENT(IN) :: cell_h
+            DOUBLE PRECISION, DIMENSION(3,3), INTENT(IN) :: cell_ih
+            INTEGER, DIMENSION(natoms), INTENT(IN) :: index_list
+            INTEGER, DIMENSION(natoms*(natoms-1)/2), INTENT(IN) :: n_list
+            DOUBLE PRECISION, INTENT(OUT) :: pot
+            DOUBLE PRECISION, DIMENSION(natoms,3), INTENT(OUT) :: forces
+            DOUBLE PRECISION, DIMENSION(3,3), INTENT(OUT) :: virial
+
+            INTEGER i, j, k, l, start
+            DOUBLE PRECISION, DIMENSION(3) :: fij, rij
+            DOUBLE PRECISION r2, pot_ij, pot_lr, vir_lr, volume
+
+            forces = 0.0d0
+            pot = 0.0d0
+            virial = 0.0d0
+
+            start = 1
+
+            DO i = 1, natoms - 1
+               ! Only loops over the neigbour list, not all the atoms.
+               DO j = start, index_list(i)
+                  CALL vector_separation(cell_h, cell_ih, atoms(i,:), atoms(n_list(j),:), rij, r2)
+                  IF (r2 < rc*rc) THEN ! Only calculates contributions between neighbouring particles.
+                     CALL SG_fij(rij, sqrt(r2), pot_ij, fij)
+
+                     forces(i,:) = forces(i,:) + fij
+                     forces(n_list(j),:) = forces(n_list(j),:) - fij
+                     pot = pot + pot_ij
+                     DO k = 1, 3
+                        DO l = k, 3
+                           ! Only the upper triangular elements calculated.
+                           virial(k,l) = virial(k,l) + fij(k)*rij(l)
+                        ENDDO
+                     ENDDO
+                  ENDIF
+               ENDDO
+               start = index_list(i) + 1
+            ENDDO
+
+            ! Assuming an upper-triangular vector matrix for the simulation box.
+            volume = cell_h(1,1)*cell_h(2,2)*cell_h(3,3)
+            CALL SG_longrange(rc, natoms, volume, pot_lr, vir_lr)
+            pot = pot + pot_lr
+            DO k = 1, 3
+               virial(k,k) = virial(k,k) + vir_lr
+            ENDDO
+
+         END SUBROUTINE
+
+      END MODULE
diff --git a/tools/i-pi/drivers/distance.f90 b/tools/i-pi/drivers/distance.f90
new file mode 100644
index 0000000000000000000000000000000000000000..aa9cde3217824c5c402db109ceb05ae3cdafe601
--- /dev/null
+++ b/tools/i-pi/drivers/distance.f90
@@ -0,0 +1,174 @@
+! This contains the algorithms needed to calculate the distance between atoms.
+! 
+! Copyright (C) 2013, Joshua More and Michele Ceriotti
+! 
+! Permission is hereby granted, free of charge, to any person obtaining a copy
+! of this software and associated documentation files (the "Software"), to deal
+! in the Software without restriction, including without limitation the rights
+! to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+! copies of the Software, and to permit persons to whom the Software is
+! furnished to do so, subject to the following conditions:
+
+! The above copyright notice and this permission notice shall be included in
+! all copies or substantial portions of the Software.
+
+! THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+! IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+! FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+! AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+! LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+! OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+! THE SOFTWARE.
+!
+! Functions:
+!    vector_separation: Calculates the vector separating two atoms.
+!    separation: Calculates the square distance between two vectors.
+!    nearest_neighbours: Generates arrays to calculate the pairs of atoms within
+!       a certain radius of each other.
+
+      MODULE DISTANCE
+      IMPLICIT NONE
+
+      CONTAINS
+
+         SUBROUTINE vector_separation(cell_h, cell_ih, ri, rj, rij, r2)
+            ! Calculates the vector separating two atoms.
+            !
+            ! Note that minimum image convention is used, so only the image of
+            ! atom j that is the shortest distance from atom i is considered.
+            !
+            ! Also note that while this may not work if the simulation
+            ! box is highly skewed from orthorhombic, as
+            ! in this case it is possible to return a distance less than the
+            ! nearest neighbour distance. However, this will not be of 
+            ! importance unless the cut-off radius is more than half the 
+            ! width of the shortest face-face distance of the simulation box,
+            ! which should never be the case.
+            !
+            ! Args:
+            !    cell_h: The simulation box cell vector matrix.
+            !    cell_ih: The inverse of the simulation box cell vector matrix.
+            !    ri: The position vector of atom i.
+            !    rj: The position vector of atom j
+            !    rij: The vector separating atoms i and j.
+            !    r2: The square of the distance between atoms i and j.
+
+            DOUBLE PRECISION, DIMENSION(3,3), INTENT(IN) :: cell_h
+            DOUBLE PRECISION, DIMENSION(3,3), INTENT(IN) :: cell_ih
+            DOUBLE PRECISION, DIMENSION(3), INTENT(IN) :: ri
+            DOUBLE PRECISION, DIMENSION(3), INTENT(IN) :: rj
+            DOUBLE PRECISION, DIMENSION(3), INTENT(OUT) :: rij 
+            DOUBLE PRECISION, INTENT(OUT) :: r2
+
+            INTEGER k
+            DOUBLE PRECISION, DIMENSION(3) :: sij  
+            ! The separation in a basis where the simulation box  
+            ! is a unit cube.
+                                                   
+            sij = matmul(cell_ih, ri - rj)
+            DO k = 1, 3
+               ! Finds the smallest separation of all the images of atom i and j
+               sij(k) = sij(k) - dnint(sij(k)) 
+            ENDDO
+            rij = matmul(cell_h, sij)
+            r2 = dot_product(rij,rij)
+
+         END SUBROUTINE
+
+         SUBROUTINE separation(cell_h, cell_ih, ri, rj, r2)
+            ! Calculates the squared distance between two position vectors.
+            !
+            ! Note that minimum image convention is used, so only the image of
+            ! atom j that is the shortest distance from atom i is considered.
+            !
+            ! Also note that while this may not work if the simulation
+            ! box is highly skewed from orthorhombic, as
+            ! in this case it is possible to return a distance less than the
+            ! nearest neighbour distance. However, this will not be of 
+            ! importance unless the cut-off radius is more than half the 
+            ! width of the shortest face-face distance of the simulation box,
+            ! which should never be the case.
+            !
+            ! Args:
+            !    cell_h: The simulation box cell vector matrix.
+            !    cell_ih: The inverse of the simulation box cell vector matrix.
+            !    ri: The position vector of atom i.
+            !    rj: The position vector of atom j
+            !    r2: The square of the distance between atoms i and j.
+
+            DOUBLE PRECISION, DIMENSION(3,3), INTENT(IN) :: cell_h
+            DOUBLE PRECISION, DIMENSION(3,3), INTENT(IN) :: cell_ih
+            DOUBLE PRECISION, DIMENSION(3), INTENT(IN) :: ri 
+            DOUBLE PRECISION, DIMENSION(3), INTENT(IN) :: rj
+            DOUBLE PRECISION, INTENT(OUT) :: r2
+
+            INTEGER k
+            ! The separation in a basis where the simulation box  
+            ! is a unit cube.
+            DOUBLE PRECISION, DIMENSION(3) :: sij
+            DOUBLE PRECISION, DIMENSION(3) :: rij
+                                                   
+            sij = matmul(cell_ih, ri - rj)
+            DO k = 1, 3
+               ! Finds the smallest separation of all the images of atom i and j
+               sij(k) = sij(k) - dnint(sij(k)) 
+            ENDDO
+            rij = matmul(cell_h, sij)
+            r2 = dot_product(rij, rij)
+
+         END SUBROUTINE
+
+         SUBROUTINE nearest_neighbours(rn, natoms, atoms, cell_h, cell_ih, index_list, n_list)
+            ! Creates a list of all the pairs of atoms that are closer together
+            ! than a certain distance.
+            !
+            ! This takes all the positions, and calculates which ones are
+            ! shorter than the distance rn. This creates two vectors, index_list
+            ! and n_list. index_list(i) gives the last index of n_list that
+            ! corresponds to a neighbour of atom i.
+            ! 
+            !
+            ! Args:
+            !    rn: The nearest neighbour list cut-off parameter. This should
+            !       be larger than the potential cut-off radius.
+            !    natoms: The number of atoms in the system.
+            !    atoms: A vector holding all the atom positions.
+            !    cell_h: The simulation box cell vector matrix.
+            !    cell_ih: The inverse of the simulation box cell vector matrix.
+            !    index_list: A array giving the last index of n_list that 
+            !       gives the neighbours of a given atom. Essentially keeps 
+            !       track of how many atoms neighbour a given atom.
+            !    n_list: An array giving the indices of the atoms that neighbour
+            !       the atom determined by index_list. Essentially keeps track
+            !       of which atoms neighbour a given atom.
+
+            DOUBLE PRECISION, INTENT(IN) :: rn
+            INTEGER, INTENT(IN) :: natoms
+            DOUBLE PRECISION, DIMENSION(:,:), INTENT(IN) :: atoms
+            DOUBLE PRECISION, DIMENSION(3,3), INTENT(IN) :: cell_h
+            DOUBLE PRECISION, DIMENSION(3,3), INTENT(IN) :: cell_ih
+            INTEGER, DIMENSION(natoms), INTENT(OUT) :: index_list
+            INTEGER, DIMENSION(natoms*(natoms-1)/2), INTENT(OUT) :: n_list
+
+            INTEGER :: i, j
+            DOUBLE PRECISION r2
+
+         index_list(1) = 0
+
+         DO i = 1, natoms - 1
+            DO j = i + 1, natoms
+               CALL separation(cell_h, cell_ih, atoms(i,:), atoms(j,:), r2)
+               IF (r2 < rn*rn) THEN
+                  ! We have found an atom that neighbours atom i, so the
+                  ! i-th index of index_list is incremented by one, and a new
+                  ! entry is added to n_list.
+                  index_list(i) = index_list(i) + 1
+                  n_list(index_list(i)) = j
+               ENDIF
+            ENDDO
+            index_list(i+1) = index_list(i)
+         ENDDO 
+
+         END SUBROUTINE
+
+      END MODULE
diff --git a/tools/i-pi/drivers/driver.f90 b/tools/i-pi/drivers/driver.f90
new file mode 100644
index 0000000000000000000000000000000000000000..9ff992dab329c8d6c09ad98e52ae58348174cfb7
--- /dev/null
+++ b/tools/i-pi/drivers/driver.f90
@@ -0,0 +1,309 @@
+! The main program which runs our driver test case potentials
+! 
+! Copyright (C) 2013, Joshua More and Michele Ceriotti
+! 
+! Permission is hereby granted, free of charge, to any person obtaining
+! a copy of this software and associated documentation files (the
+! "Software"), to deal in the Software without restriction, including
+! without limitation the rights to use, copy, modify, merge, publish,
+! distribute, sublicense, and/or sell copies of the Software, and to
+! permit persons to whom the Software is furnished to do so, subject to
+! the following conditions:
+! 
+! The above copyright notice and this permission notice shall be included
+! in all copies or substantial portions of the Software.
+! 
+! THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+! EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+! MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+! IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+! CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+! TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+! SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+!
+!
+! Currently the potentials implemented are the Lennard-Jones
+! potential, the Silvera-Goldman para-hydrogen potential and
+! the ideal gas (i.e. no interaction at all)
+
+      PROGRAM DRIVER
+         USE LJ
+         USE SG
+      IMPLICIT NONE
+
+      ! SOCKET VARIABLES
+      INTEGER, PARAMETER :: MSGLEN=12   ! length of the headers of the driver/wrapper communication protocol
+      INTEGER socket, inet, port        ! socket ID & address of the server
+      CHARACTER*1024 :: host
+
+      ! COMMAND LINE PARSING
+      CHARACTER*1024 :: cmdbuffer, vops
+      INTEGER ccmd, vstyle
+      LOGICAL verbose
+      INTEGER commas(4), par_count      ! stores the index of commas in the parameter string
+      DOUBLE PRECISION vpars(4)         ! array to store the parameters of the potential
+
+      ! SOCKET COMMUNICATION BUFFERS
+      CHARACTER*12 :: header
+      LOGICAL :: isinit=.false., hasdata=.false.
+      INTEGER cbuf
+      CHARACTER*2048 :: initbuffer      ! it's unlikely a string this large will ever be passed...
+      DOUBLE PRECISION, ALLOCATABLE :: msgbuffer(:)
+
+      ! PARAMETERS OF THE SYSTEM (CELL, ATOM POSITIONS, ...)
+      DOUBLE PRECISION sigma, eps, rc, rn, ks ! potential parameters
+      INTEGER nat
+      DOUBLE PRECISION pot
+      DOUBLE PRECISION, ALLOCATABLE :: atoms(:,:), forces(:,:)
+      DOUBLE PRECISION cell_h(3,3), cell_ih(3,3), virial(3,3)
+      DOUBLE PRECISION volume
+
+      ! NEIGHBOUR LIST ARRAYS
+      INTEGER, DIMENSION(:), ALLOCATABLE :: n_list, index_list
+      DOUBLE PRECISION init_volume, init_rc ! needed to correctly adjust the cut-off radius for variable cell dynamics
+      DOUBLE PRECISION, ALLOCATABLE :: last_atoms(:,:) ! Holds the positions when the neighbour list is created
+      DOUBLE PRECISION displacement ! Tracks how far each atom has moved since the last call of nearest_neighbours
+
+      INTEGER i
+
+      ! parse the command line parameters
+      ! intialize defaults
+      ccmd = 0
+      inet = 1
+      host = "localhost"//achar(0)
+      port = 31415
+      verbose = .false.
+      par_count = 0
+      vstyle = -1
+
+      DO i = 1, IARGC()
+         CALL GETARG(i, cmdbuffer)
+         IF (cmdbuffer == "-u") THEN ! flag for unix socket
+            inet = 0
+            ccmd = 0
+         ELSEIF (cmdbuffer == "-h") THEN ! read the hostname
+            ccmd = 1
+         ELSEIF (cmdbuffer == "-p") THEN ! reads the port number
+            ccmd = 2
+         ELSEIF (cmdbuffer == "-m") THEN ! reads the style of the potential function
+            ccmd = 3
+         ELSEIF (cmdbuffer == "-o") THEN ! reads the parameters
+            ccmd = 4
+         ELSEIF (cmdbuffer == "-v") THEN ! flag for verbose standard output
+            verbose = .true.
+         ELSE
+            IF (ccmd == 0) THEN
+               WRITE(*,*) " Unrecognized command line argument", ccmd
+               WRITE(*,*) " SYNTAX: driver.x [-u] -h hostname -p port -m [gas|lj|sg|harm] -o 'comma_separated_parameters' [-v] "
+               WRITE(*,*) ""
+               WRITE(*,*) " For LJ potential use -o sigma,epsilon,cutoff "
+               WRITE(*,*) " For SG potential use -o cutoff "
+               WRITE(*,*) " For 1D harmonic oscillator use -o k "
+               WRITE(*,*) " For the ideal gas, no options needed! "
+               CALL EXIT(-1)
+            ENDIF
+            IF (ccmd == 1) THEN
+               host = trim(cmdbuffer)//achar(0)
+            ELSEIF (ccmd == 2) THEN
+               READ(cmdbuffer,*) port
+            ELSEIF (ccmd == 3) THEN
+               IF (trim(cmdbuffer) == "lj") THEN
+                  vstyle = 1
+               ELSEIF (trim(cmdbuffer) == "sg") THEN
+                  vstyle = 2
+               ELSEIF (trim(cmdbuffer) == "harm") THEN
+                  vstyle = 3
+               ELSEIF (trim(cmdbuffer) == "gas") THEN
+                  vstyle = 0  ! ideal gas
+               ELSE
+                  WRITE(*,*) " Unrecognized potential type ", trim(cmdbuffer)
+                  WRITE(*,*) " Use -m [gas|lj|sg|harm] "
+                  CALL EXIT(-1)
+               ENDIF
+            ELSEIF (ccmd == 4) THEN
+               par_count = 1
+               commas(1) = 0
+               DO WHILE (index(cmdbuffer(commas(par_count)+1:), ',') > 0) 
+                  commas(par_count + 1) = index(cmdbuffer(commas(par_count)+1:), ',') + commas(par_count)
+                  READ(cmdbuffer(commas(par_count)+1:commas(par_count + 1)-1),*) vpars(par_count)
+                  par_count = par_count + 1
+               ENDDO
+               READ(cmdbuffer(commas(par_count)+1:),*) vpars(par_count)
+            ENDIF
+            ccmd = 0
+         ENDIF
+      ENDDO
+
+      IF (vstyle == -1) THEN
+         WRITE(*,*) " Error, type of potential not specified."
+         WRITE(*,*) " SYNTAX: driver.x [-u] -h hostname -p port -m [gas|lj|sg|harm] -o 'comma_separated_parameters' [-v] "
+         WRITE(*,*) ""
+         WRITE(*,*) " For LJ potential use -o sigma,epsilon,cutoff "
+         WRITE(*,*) " For SG potential use -o cutoff "
+         WRITE(*,*) " For the ideal gas, no options needed! "
+         CALL EXIT(-1)
+      ELSEIF (vstyle == 0) THEN
+         IF (par_count /= 0) THEN
+            WRITE(*,*) "Error: no initialization string needed for ideal gas."
+            CALL EXIT(-1) 
+         ENDIF   
+         isinit = .true.
+      ELSEIF (vstyle == 1) THEN
+         IF (par_count /= 3) THEN
+            WRITE(*,*) "Error: parameters not initialized correctly."
+            WRITE(*,*) "For LJ potential use -o sigma,epsilon,cutoff "
+            CALL EXIT(-1) ! Note that if initialization from the wrapper is implemented this exit should be removed.
+         ENDIF   
+         sigma = vpars(1)
+         eps = vpars(2)
+         rc = vpars(3)
+         rn = rc*1.2
+         isinit = .true.
+      ELSEIF (vstyle == 2) THEN
+         IF (par_count /= 1) THEN
+            WRITE(*,*) "Error: parameters not initialized correctly."
+            WRITE(*,*) "For SG potential use -o cutoff "
+            CALL EXIT(-1) ! Note that if initialization from the wrapper is implemented this exit should be removed.
+         ENDIF
+         rc = vpars(1)
+         rn = rc*1.2
+         isinit = .true.
+      ELSEIF (vstyle == 3) THEN
+         IF (par_count /= 1) THEN
+            WRITE(*,*) "Error: parameters not initialized correctly."
+            WRITE(*,*) "For 1D harmonic potential use -o k "
+            CALL EXIT(-1) ! Note that if initialization from the wrapper is implemented this exit should be removed.
+         ENDIF
+         ks = vpars(1)
+         isinit = .true.
+      ENDIF
+
+      IF (verbose) THEN
+         WRITE(*,*) " DRIVER - Connecting to host ", trim(host)
+         IF (inet > 0) THEN
+            WRITE(*,*) " on port ", port, " using an internet socket."
+         ELSE
+            WRITE(*,*) " using an UNIX socket."
+         ENDIF
+      ENDIF
+
+      ! Calls the interface to the C sockets to open a communication channel
+      CALL open_socket(socket, inet, port, host)
+      nat = -1
+      DO WHILE (.true.) ! Loops forever (or until the wrapper ends!)
+
+         ! Reads from the socket one message header
+         CALL readbuffer(socket, header, MSGLEN)
+         IF (verbose) WRITE(*,*) " Message from server: ", trim(header)
+
+         IF (trim(header) == "STATUS") THEN
+            ! The wrapper is inquiring on what we are doing
+            IF (.not. isinit) THEN
+               CALL writebuffer(socket,"NEEDINIT    ",MSGLEN)  ! Signals that we need initialization data
+            ELSEIF (hasdata) THEN
+               CALL writebuffer(socket,"HAVEDATA    ",MSGLEN)  ! Signals that we are done computing and can return forces
+            ELSE
+               CALL writebuffer(socket,"READY       ",MSGLEN)  ! We are idling and eager to compute something
+            ENDIF
+         ELSEIF (trim(header) == "INIT") THEN     ! The driver is kindly providing a string for initialization
+            CALL readbuffer(socket, cbuf, 4)
+            CALL readbuffer(socket, initbuffer, cbuf)
+            IF (verbose) WRITE(*,*) " Initializing system from wrapper, using ", trim(initbuffer)
+            isinit=.true. ! We actually do nothing with this string, thanks anyway. Could be used to pass some information (e.g. the input parameters, or the index of the replica, from the driver
+         ELSEIF (trim(header) == "POSDATA") THEN  ! The driver is sending the positions of the atoms. Here is where we do the calculation!
+
+            ! Parses the flow of data from the socket
+            CALL readbuffer(socket, cell_h,  9*8)  ! Cell matrix
+            CALL readbuffer(socket, cell_ih, 9*8)  ! Inverse of the cell matrix (so we don't have to invert it every time here)
+
+            ! The wrapper uses atomic units for everything, and row major storage.
+            ! At this stage one should take care that everything is converted in the
+            ! units and storage mode used in the driver.
+            cell_h = transpose(cell_h)
+            cell_ih = transpose(cell_ih)
+            ! We assume an upper triangular cell-vector matrix
+            volume = cell_h(1,1)*cell_h(2,2)*cell_h(3,3)
+
+            CALL readbuffer(socket, cbuf, 4)       ! The number of atoms in the cell
+            IF (nat < 0) THEN  ! Assumes that the number of atoms does not change throughout a simulation, so only does this once
+               nat = cbuf
+               IF (verbose) WRITE(*,*) " Allocating buffer and data arrays, with ", nat, " atoms"
+               ALLOCATE(msgbuffer(3*nat))
+               ALLOCATE(atoms(nat,3))
+               ALLOCATE(forces(nat,3))
+            ENDIF
+
+            CALL readbuffer(socket, msgbuffer, nat*3*8)
+            DO i = 1, nat
+               atoms(i,:) = msgbuffer(3*(i-1)+1:3*i)
+            ENDDO
+
+            IF (vstyle == 0) THEN   ! ideal gas, so no calculation done
+               pot = 0
+               forces = 0
+               virial = 0
+            ELSEIF (vstyle == 3) THEN ! 1D harmonic potential, so only uses the first position variable
+               pot = 0.5*ks*atoms(1,1)**2
+               forces = 0
+               forces(1,1) = -ks*atoms(1,1)
+               virial = 0
+               virial(1,1) = forces(1,1)*atoms(1,1)
+            ELSE
+               IF ((allocated(n_list) .neqv. .true.)) THEN
+                  IF (verbose) WRITE(*,*) " Allocating neighbour lists."
+                  ALLOCATE(n_list(nat*(nat-1)/2))
+                  ALLOCATE(index_list(nat))
+                  ALLOCATE(last_atoms(nat,3))
+                  CALL nearest_neighbours(rn, nat, atoms, cell_h, cell_ih, index_list, n_list)
+                  last_atoms = atoms
+                  init_volume = volume
+                  init_rc = rc
+               ENDIF
+
+               ! Checking to see if we need to re-calculate the neighbour list
+               rc = init_rc*(volume/init_volume)**(1.0/3.0)
+               DO i = 1, nat
+                  CALL separation(cell_h, cell_ih, atoms(i,:), last_atoms(i,:), displacement)
+                  ! Note that displacement is the square of the distance moved by atom i since the last time the neighbour list was created.
+                  IF (4*displacement > (rn-rc)*(rn-rc)) THEN
+                     IF (verbose) WRITE(*,*) " Recalculating neighbour lists"
+                     CALL nearest_neighbours(rn, nat, atoms, cell_h, cell_ih, index_list, n_list)
+                     last_atoms = atoms
+                     rn = 1.2*rc
+                     EXIT
+                  ENDIF
+               ENDDO
+
+               IF (vstyle == 1) THEN
+                  CALL LJ_getall(rc, sigma, eps, nat, atoms, cell_h, cell_ih, index_list, n_list, pot, forces, virial)
+               ELSEIF (vstyle == 2) THEN
+                  CALL SG_getall(rc, nat, atoms, cell_h, cell_ih, index_list, n_list, pot, forces, virial)
+               ENDIF
+               IF (verbose) WRITE(*,*) " Calculated energy is ", pot
+            ENDIF
+            hasdata = .true. ! Signal that we have data ready to be passed back to the wrapper
+         ELSEIF (trim(header) == "GETFORCE") THEN  ! The driver calculation is finished, it's time to send the results back to the wrapper
+
+            ! Data must be re-formatted (and units converted) in the units and shapes used in the wrapper
+            DO i = 1, nat
+               msgbuffer(3*(i-1)+1:3*i) = forces(i,:)
+            ENDDO
+            virial = transpose(virial)
+
+            CALL writebuffer(socket,"FORCEREADY  ",MSGLEN)
+            CALL writebuffer(socket,pot,8)  ! Writing the potential
+            CALL writebuffer(socket,nat,4)  ! Writing the number of atoms
+            CALL writebuffer(socket,msgbuffer,3*nat*8) ! Writing the forces
+            CALL writebuffer(socket,virial,9*8)  ! Writing the virial tensor, NOT divided by the volume
+            cbuf = 7 ! Size of the "extras" string
+            CALL writebuffer(socket,cbuf,4) ! This would write out the "extras" string, but in this case we only use a dummy string.
+            CALL writebuffer(socket,"nothing",7)
+
+            hasdata = .false.
+         ELSE
+            WRITE(*,*) " Unexpected header ", header
+            CALL EXIT(-1)
+         ENDIF
+      ENDDO
+      IF (nat > 0) DEALLOCATE(atoms, forces, msgbuffer)
+      END PROGRAM
diff --git a/tools/i-pi/drivers/sockets.c b/tools/i-pi/drivers/sockets.c
new file mode 100644
index 0000000000000000000000000000000000000000..6fda1b64ec1f24357aa9581c4df011b79f3ac6ff
--- /dev/null
+++ b/tools/i-pi/drivers/sockets.c
@@ -0,0 +1,147 @@
+/* A minimal wrapper for socket communication.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+Contains both the functions that transmit data to the socket and read the data
+back out again once finished, and the function which opens the socket initially.
+Can be linked to a FORTRAN code that does not support sockets natively.
+
+Functions:
+   error: Prints an error message and then exits.
+   open_socket_: Opens a socket with the required host server, socket type and
+      port number.
+   write_buffer_: Writes a string to the socket.
+   read_buffer_: Reads data from the socket.
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <sys/un.h>
+#include <netdb.h>
+
+void error(const char *msg)
+// Prints an error message and then exits.
+{   perror(msg);  exit(-1);   }
+
+void open_socket_(int *psockfd, int* inet, int* port, char* host)
+/* Opens a socket.
+
+Note that fortran passes an extra argument for the string length, but this is
+ignored here for C compatibility.
+
+Args:
+   psockfd: The id of the socket that will be created.
+   inet: An integer that determines whether the socket will be an inet or unix
+      domain socket. Gives unix if 0, inet otherwise.
+   port: The port number for the socket to be created. Low numbers are often
+      reserved for important channels, so use of numbers of 4 or more digits is
+      recommended.
+   host: The name of the host server.
+*/
+
+{
+   int sockfd, portno, n;
+   struct hostent *server;
+
+   struct sockaddr * psock; int ssock;
+
+   if (*inet>0)
+   {  // creates an internet socket
+      struct sockaddr_in serv_addr;      psock=(struct sockaddr *)&serv_addr;     ssock=sizeof(serv_addr);
+      sockfd = socket(AF_INET, SOCK_STREAM, 0);
+      if (sockfd < 0)  error("Error opening socket");
+
+      server = gethostbyname(host);
+      if (server == NULL)
+      {
+         fprintf(stderr, "Error opening socket: no such host %s \n", host);
+         exit(-1);
+      }
+
+      bzero((char *) &serv_addr, sizeof(serv_addr));
+      serv_addr.sin_family = AF_INET;
+      bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr, server->h_length);
+      serv_addr.sin_port = htons(*port);
+      if (connect(sockfd, psock, ssock) < 0) error("Error opening socket: wrong host address, or broken connection");
+   }
+   else
+   {  // creates a unix socket
+      struct sockaddr_un serv_addr;      psock=(struct sockaddr *)&serv_addr;     ssock=sizeof(serv_addr);
+      sockfd = socket(AF_UNIX, SOCK_STREAM, 0);
+      bzero((char *) &serv_addr, sizeof(serv_addr));
+      serv_addr.sun_family = AF_UNIX;
+      strcpy(serv_addr.sun_path, "/tmp/ipi_");
+      strcpy(serv_addr.sun_path+9, host);
+      if (connect(sockfd, psock, ssock) < 0) error("Error opening socket: wrong host address, or broken connection");
+   }
+
+   *psockfd=sockfd;
+}
+
+void writebuffer_(int *psockfd, char *data, int* plen)
+/* Writes to a socket.
+
+Args:
+   psockfd: The id of the socket that will be written to.
+   data: The data to be written to the socket.
+   plen: The length of the data in bytes.
+*/
+
+{
+   int n;
+   int sockfd=*psockfd;
+   int len=*plen;
+
+   n = write(sockfd,data,len);
+   if (n < 0) error("Error writing to socket: server has quit or connection broke");
+}
+
+
+void readbuffer_(int *psockfd, char *data, int* plen)
+/* Reads from a socket.
+
+Args:
+   psockfd: The id of the socket that will be read from.
+   data: The storage array for data read from the socket.
+   plen: The length of the data in bytes.
+*/
+
+{
+   int n, nr;
+   int sockfd=*psockfd;
+   int len=*plen;
+
+   n = nr = read(sockfd,data,len);
+
+   while (nr>0 && n<len )
+   {  nr=read(sockfd,&data[n],len-n); n+=nr; }
+
+   if (n == 0) error("Error reading from socket: server has quit or connection broke");
+}
+
+
diff --git a/tools/i-pi/examples/lammps/Makefile b/tools/i-pi/examples/lammps/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..4e1eb8c90bbe3cf6ebd7f5a8173b0df887b903b4
--- /dev/null
+++ b/tools/i-pi/examples/lammps/Makefile
@@ -0,0 +1,70 @@
+# Makefile for the q-TIP4P-F examples
+# 
+# Copyright (C) 2013, Joshua More and Michele Ceriotti
+# 
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+# 
+# This program 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 General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+.PHONY: all clean graphene h2o-piglet_2 h2o-piglet_4 h2o-piglet_8 h2o-rpc h2o-pimd
+all: graphene h2o-piglet_2 h2o-piglet_4 h2o-piglet_8 h2o-rpc h2o-pimd
+
+LAMMPS:=../../../../../src/lmp_ubuntu
+IPI:=../../../i-pi
+
+define run_lammps
+  for i in `seq 1 $1`; do \
+    $(LAMMPS) < $2 & \
+  done;
+endef
+-include make.in
+
+graphene:
+	cd graphene; $(IPI) input.xml & \
+	sleep 20; \
+        $(call run_lammps,4,in.kappa.Graphene) \
+	wait
+
+h2o-piglet_2:
+	cd h2o-piglet.2; $(IPI) input.xml & sleep 5; \
+        $(call run_lammps,2,in.water) \
+	wait
+	
+h2o-piglet_4:
+	cd h2o-piglet.4; $(IPI) input.xml & sleep 5; \
+        $(call run_lammps,4,in.water) \
+	wait
+
+h2o-piglet_8:
+	cd h2o-piglet.8; $(IPI) input.xml & sleep 5; \
+        $(call run_lammps,4,in.water) \
+	wait
+
+h2o-pimd:
+	cd h2o-pimd; $(IPI) input.xml & sleep 5; \
+        $(call run_lammps,4,in.water) \
+	wait
+
+h2o-rpc:
+	cd h2o-pimd-rpc; $(IPI) input.xml & sleep 5; \
+        $(call run_lammps,4,in.water_shortrange) \
+        $(call run_lammps,1,in.water_longrange) \
+	wait
+
+clean:
+	rm -f */gle_lammps.* */RESTART */EXIT */log.lammps; \
+	cd h2o-pimd; \
+	rm -f RESTART EXIT log.lammps no_rpc.*; cd ..; \
+	cd h2o-pimd-rpc; \
+	rm -f RESTART EXIT log.lammps rpc.*; cd ..; \
+	cd graphene; \
+	rm -f graph.* RESTART EXIT log.lammps graphene.lammpstraj nohup.out; cd ..
diff --git a/tools/i-pi/examples/lammps/README b/tools/i-pi/examples/lammps/README
new file mode 100644
index 0000000000000000000000000000000000000000..0bb5a74fa6a94075b121da6e29e2af29bd0900b0
--- /dev/null
+++ b/tools/i-pi/examples/lammps/README
@@ -0,0 +1,70 @@
+ -- Examples of i-PI working with LAMMPS --
+ 
+ -- Example with Tersoff graphene potential --
+
+   Uses the Tersoff parameters of Lindsay and Broido PRB 81, 205441 (2010)
+   to run a short simulation of graphene with the LAMMPS MD code.
+ 
+ -- Example with the q-TIP4P-F water potential --
+
+ * This gives an example of water with the q-TIP4P-F potential
+   of Scott Habershon, Thomas E. Markland and David E. Manolopoulos,
+   J. Chem. Phys., 131, 024501, (2009).
+
+ * State point: (N, V, T) = (216 water molecules, 43737 a_0**3, 298 K)
+
+ * This demonstrates the convergence of the kinetic and potential energy
+   using the ring polymer contraction (RPC) method of Thomas E. Markland and
+   David E. Manolopoulos, J. Chem. Phys. 129, 024105, (2008), and
+   the PIGLET method of Michele Ceriotti and 
+   David Manolopoulos, Phys. Rev. Lett., 109, 100604, (2012).
+
+
+** Run the examples automatically:
+
+ * First, it is necessary to patch and compile LAMMPS, and create a make.in
+   file containing the path to the executable and i-pi, e.g.
+
+LAMMPS:=~/bin/lmp_serial
+IPI:=~/bin/i-pi
+ 
+ * The runs can be done automatically using the Makefile provided. The make 
+   targets are self-explanatory. To run the RPC example, for instance, just type:
+
+$ make h2o-rpc
+
+ * To clean up output files:
+
+$ make clean
+
+
+** Run the examples manually:
+
+ * Go back to the example directory and run
+
+$ python path/i-pi input.xml
+ 
+   the wrapper will start and sit waiting on the UDS /tmp/ipi.
+ 
+ * Open a separate terminal and run the LAMMPS driver code using:
+ 
+$ path/lammps/src/lmp_serial < in.water
+
+   For the RPC run, instead use:
+
+$ path/lammps/src/lmp_serial < in.water_longrange
+$ path/lammps/src/lmp_serial < in.water_shortrange
+
+   You can run multiple instances of the code; it is so fast that parallel 
+   scaling won't be appreciable.
+
+ * If your system does not support Unix domain sockets, just set in input.xml
+   <socket mode="unix"> <port> port_no </port>
+
+   To make the client socket connect, the in.water file should 
+   be changed so that it has the line:
+
+   fix 1 all driver hostname port_no
+
+   where hostname is the address the socket is binding to; either graphene, piglet_2,
+   piglet_4, piglet_8, rpc_long, rpc_short or no_rpc depending on the run.
diff --git a/tools/i-pi/examples/lammps/h2o-piglet.2/data.water b/tools/i-pi/examples/lammps/h2o-piglet.2/data.water
new file mode 100644
index 0000000000000000000000000000000000000000..13c75e993391340233222a511f10b475c6240737
--- /dev/null
+++ b/tools/i-pi/examples/lammps/h2o-piglet.2/data.water
@@ -0,0 +1,1331 @@
+LAMMPS Description
+ 
+         648  atoms
+         432  bonds
+         216  angles
+ 
+           2  atom types
+           1  bond types
+           1  angle types
+ 
+         0 35.233 xlo xhi
+         0 35.233 ylo yhi
+         0 35.233 zlo zhi
+ 
+Masses
+ 
+  1 15.9994
+  2  1.0080
+ 
+Bond Coeffs
+ 
+  1    1.78    0.2708585 -0.327738785 0.231328959
+ 
+Angle Coeffs
+ 
+  1    0.0700  107.400000
+
+Atoms
+ 
+ 1 1 1 -1.1128       3.84600000       5.67200001       1.32300000
+ 2 1 2 0.5564        2.97900000       7.05400000       0.85700000
+ 3 1 2 0.5564        5.52500001       5.69700001       0.45100000
+ 4 2 1 -1.1128      34.55700001      34.34100000       3.07800000
+ 5 2 2 0.5564       33.72200001      34.68900000       4.84000001
+ 6 2 2 0.5564       36.02900000      33.22000001       3.71100001
+ 7 3 1 -1.1128       5.59100000       1.96299999      13.47700000
+ 8 3 2 0.5564        7.26500000       1.86400000      13.85100001
+ 9 3 2 0.5564        5.00899999       3.55500000      13.91599999
+ 10 4 1 -1.1128       1.06000000       2.06100000      21.71800001
+ 11 4 2 0.5564        0.75700000       0.26100000      21.82000000
+ 12 4 2 0.5564        0.21300001       3.01299999      23.04700000
+ 13 5 1 -1.1128       1.20000000       1.33700000      29.00599999
+ 14 5 2 0.5564        0.81800000       1.88399999      30.73200000
+ 15 5 2 0.5564        2.88300001       1.82500000      29.01100000
+ 16 6 1 -1.1128       1.33100001       1.38599999      34.30600001
+ 17 6 2 0.5564        2.39200001       2.89799999      34.84600000
+ 18 6 2 0.5564        0.81400000       0.53200001      35.83600000
+ 19 7 1 -1.1128      31.45100000      10.20100000       0.72599999
+ 20 7 2 0.5564       32.28199999      10.87699999      -0.75000000
+ 21 7 2 0.5564       30.91999999      11.59399999       1.67700000
+ 22 8 1 -1.1128       0.83600000      10.80800001       4.29800000
+ 23 8 2 0.5564        0.30500000      10.64300001       2.79300000
+ 24 8 2 0.5564       -0.35600001      10.33400000       5.52400000
+ 25 9 1 -1.1128      34.38100001       5.97900000       9.19400000
+ 26 9 2 0.5564       33.61600000       7.67300000       8.85700000
+ 27 9 2 0.5564       35.11500000       5.25999999       7.61800001
+ 28 10 1 -1.1128      33.21200000       6.48000000      24.27799999
+ 29 10 2 0.5564       31.62400000       6.90800001      23.52100001
+ 30 10 2 0.5564       32.54400000       4.99000000      24.98200000
+ 31 11 1 -1.1128       1.99200000       9.00199999      26.86300000
+ 32 11 2 0.5564        1.85600000      10.17500000      25.57899999
+ 33 11 2 0.5564        0.51900000       8.09899999      26.38599999
+ 34 12 1 -1.1128       2.05400000       8.66000000      32.51499999
+ 35 12 2 0.5564        2.16699999       8.72700000      30.49400000
+ 36 12 2 0.5564        2.37400001      10.51300000      33.03799999
+ 37 13 1 -1.1128       3.40200000      16.63900001       3.00800000
+ 38 13 2 0.5564        4.12700001      15.87200001       4.44600001
+ 39 13 2 0.5564        2.90500001      18.33899999       3.15999999
+ 40 14 1 -1.1128       4.22200000      15.44400000       8.07200000
+ 41 14 2 0.5564        5.21100000      16.75600000       8.29900001
+ 42 14 2 0.5564        2.56000000      15.49200001       8.86000000
+ 43 15 1 -1.1128       2.83100000       9.24599999      16.48800000
+ 44 15 2 0.5564        2.86900001       8.02300001      18.05000000
+ 45 15 2 0.5564        3.96000000       8.46700001      15.15400000
+ 46 16 1 -1.1128       5.56300000       6.00300000      20.90700000
+ 47 16 2 0.5564        4.65300000       4.63800000      21.48000000
+ 48 16 2 0.5564        6.40500000       6.20800000      22.52899999
+ 49 17 1 -1.1128       2.08700001      13.37000000      22.91299999
+ 50 17 2 0.5564        2.83200000      14.80400001      23.42200000
+ 51 17 2 0.5564        1.43400000      13.50900000      21.19599999
+ 52 18 1 -1.1128       3.36900000      17.88600000      25.10900001
+ 53 18 2 0.5564        3.65500000      17.20000000      26.76599999
+ 54 18 2 0.5564        4.77200001      18.97699999      24.49999999
+ 55 19 1 -1.1128      34.76400000      20.80300000       0.94800001
+ 56 19 2 0.5564       35.20999999      21.26700001       2.81599999
+ 57 19 2 0.5564       35.96200001      21.72599999       0.13099999
+ 58 20 1 -1.1128       2.83600000      24.17799999      15.22900000
+ 59 20 2 0.5564        2.79500000      22.34599999      14.87600001
+ 60 20 2 0.5564        2.41399999      24.11500000      17.13000001
+ 61 21 1 -1.1128      33.00000000      24.48100000      15.23000000
+ 62 21 2 0.5564       34.63999999      24.80400001      15.01299999
+ 63 21 2 0.5564       32.40100000      25.76400000      14.29500001
+ 64 22 1 -1.1128       0.40399999      26.77900001      23.39999999
+ 65 22 2 0.5564        1.35300001      27.24800000      24.98700001
+ 66 22 2 0.5564        1.54600001      28.05000000      22.31700001
+ 67 23 1 -1.1128      34.22200000      21.38000000      25.41799999
+ 68 23 2 0.5564       35.66899999      20.15100000      25.31700001
+ 69 23 2 0.5564       32.96000000      21.18000000      23.99200000
+ 70 24 1 -1.1128      33.25900000      17.43800000      32.48000000
+ 71 24 2 0.5564       33.31399999      18.78200000      33.88300001
+ 72 24 2 0.5564       32.74300001      18.18100001      30.87100000
+ 73 25 1 -1.1128       4.46300000      21.97900000       3.93600000
+ 74 25 2 0.5564        5.85600000      23.08400001       3.39999999
+ 75 25 2 0.5564        3.98600000      22.18000000       5.60200000
+ 76 26 1 -1.1128       6.25800000      25.85100001       8.52000000
+ 77 26 2 0.5564        5.76700000      27.69300001       8.47600000
+ 78 26 2 0.5564        7.20200001      25.50600000      10.18600000
+ 79 27 1 -1.1128       0.60099999      29.73699999      12.74700001
+ 80 27 2 0.5564       -0.68500000      30.84200000      12.34999999
+ 81 27 2 0.5564        1.33600000      30.71600000      14.03099999
+ 82 28 1 -1.1128       7.56300000      28.19100001      24.33300000
+ 83 28 2 0.5564        9.20100000      28.82800000      24.68400000
+ 84 28 2 0.5564        7.38100001      27.62100000      22.79900000
+ 85 29 1 -1.1128       3.65300000      27.10900001      27.77200001
+ 86 29 2 0.5564        5.12600000      27.01500000      26.77200001
+ 87 29 2 0.5564        3.03099999      28.75600000      27.69800000
+ 88 30 1 -1.1128       2.59600001      23.99100001      32.47600000
+ 89 30 2 0.5564        2.87900000      24.79099999      30.85899999
+ 90 30 2 0.5564        4.00300000      22.91299999      32.70099999
+ 91 31 1 -1.1128       3.08300000      31.31700001       3.64399999
+ 92 31 2 0.5564        4.13300000      30.58900001       2.53900001
+ 93 31 2 0.5564        4.21800000      32.17300001       5.03700001
+ 94 32 1 -1.1128       4.66100001      30.55500000       9.36799999
+ 95 32 2 0.5564        3.18400001      29.84300000      10.13200000
+ 96 32 2 0.5564        4.35800000      32.44800000       9.12600000
+ 97 33 1 -1.1128       3.46499999      32.53700000      15.77800000
+ 98 33 2 0.5564        5.07200000      31.81899999      15.90300000
+ 99 33 2 0.5564        4.05500001      34.25699999      15.28400000
+ 100 34 1 -1.1128       4.21500000      29.15299999      20.31700001
+ 101 34 2 0.5564        3.65799999      30.17600000      18.84200000
+ 102 34 2 0.5564        4.95899999      30.29100000      21.44900001
+ 103 35 1 -1.1128       1.12600000      31.33300000      28.76800001
+ 104 35 2 0.5564        2.39500000      31.12399999      29.92500000
+ 105 35 2 0.5564        0.76800001      33.09199999      28.89799999
+ 106 36 1 -1.1128       4.88100000      32.61600000      32.30200000
+ 107 36 2 0.5564        6.58800000      32.91100000      31.72500001
+ 108 36 2 0.5564        4.48599999      34.03700001      33.24900001
+ 109 37 1 -1.1128       8.96200001       5.55600000       0.15100000
+ 110 37 2 0.5564        9.65200000       6.99100001       0.85899999
+ 111 37 2 0.5564        9.17300001       4.47700000       1.64500000
+ 112 38 1 -1.1128       1.83300001       3.51799999       5.67900001
+ 113 38 2 0.5564        2.88900000       2.73100000       6.78800000
+ 114 38 2 0.5564        2.78900000       4.18700000       4.14700000
+ 115 39 1 -1.1128      10.51000001      34.72599999      13.07300001
+ 116 39 2 0.5564       11.91999999      34.11800000      11.91900001
+ 117 39 2 0.5564       11.29500001      34.96800000      14.74100000
+ 118 40 1 -1.1128       7.21200000       0.04199999      22.45399999
+ 119 40 2 0.5564        6.92400000       0.47000000      24.17200000
+ 120 40 2 0.5564        8.31900000       1.22799999      21.65300000
+ 121 41 1 -1.1128       6.36500000       2.01000000      27.54400000
+ 122 41 2 0.5564        5.95400000       3.58500000      26.85199999
+ 123 41 2 0.5564        7.75800001       2.54900000      28.69600000
+ 124 42 1 -1.1128      10.83300001       3.14000000      30.78699999
+ 125 42 2 0.5564       12.69700001       2.97500000      30.86700000
+ 126 42 2 0.5564       10.38899999       3.70000001      32.40399999
+ 127 43 1 -1.1128       8.68400000       9.34200001       3.91200001
+ 128 43 2 0.5564        6.98500000       9.25600001       4.77299999
+ 129 43 2 0.5564        8.68400000      10.80899999       3.01100000
+ 130 44 1 -1.1128       4.87299999       9.91900001       7.70700000
+ 131 44 2 0.5564        3.69800000       9.77100000       6.19400000
+ 132 44 2 0.5564        5.04700000      11.96100000       7.62400000
+ 133 45 1 -1.1128      10.03099999       5.01800000       9.69900000
+ 134 45 2 0.5564        9.67500001       3.38199999      10.34000000
+ 135 45 2 0.5564        9.13200000       5.98700001      10.82500000
+ 136 46 1 -1.1128      11.24599999       3.91800000      21.92900000
+ 137 46 2 0.5564       12.61400001       2.77000000      22.34100000
+ 138 46 2 0.5564       12.07300001       5.68600001      21.49699999
+ 139 47 1 -1.1128       6.82500000       7.16400000      25.70799999
+ 140 47 2 0.5564        8.03600000       8.37400001      25.98000001
+ 141 47 2 0.5564        5.20600001       7.90000000      25.89099999
+ 142 48 1 -1.1128      10.17099999      12.81100001       0.29500001
+ 143 48 2 0.5564       10.03300000      12.81800000      -1.60900000
+ 144 48 2 0.5564        9.87999999      14.49200001       0.48000000
+ 145 49 1 -1.1128       8.19000000      17.40200000       1.25299999
+ 146 49 2 0.5564        9.47199999      18.53100000       1.25299999
+ 147 49 2 0.5564        6.35100000      17.81700000       1.56800001
+ 148 50 1 -1.1128      11.23300000      16.18800001       8.29900001
+ 149 50 2 0.5564       10.29100000      17.68900000       8.16600001
+ 150 50 2 0.5564       12.76800001      17.12300001       8.73299999
+ 151 51 1 -1.1128       6.38599999       8.00199999      12.84600000
+ 152 51 2 0.5564        7.70099999       8.89600000      13.65500000
+ 153 51 2 0.5564        5.59100000       8.87699999      11.51900000
+ 154 52 1 -1.1128       8.18400001      10.41900000      18.84799999
+ 155 52 2 0.5564        9.49800000       9.43400000      19.90500001
+ 156 52 2 0.5564        6.88200000       9.02699999      18.94800001
+ 157 53 1 -1.1128      10.80600000      14.43100000      21.32799999
+ 158 53 2 0.5564        9.17700001      13.53100000      20.67000000
+ 159 53 2 0.5564       11.34400000      15.69600000      20.44800000
+ 160 54 1 -1.1128       9.23700000      13.92800000      30.34100000
+ 161 54 2 0.5564       10.77900001      14.83900000      30.52199999
+ 162 54 2 0.5564        9.96500000      13.19199999      28.89900000
+ 163 55 1 -1.1128      10.91800000      21.70700000       1.86400000
+ 164 55 2 0.5564       10.28000000      23.44900001       2.27900000
+ 165 55 2 0.5564       12.70799999      21.45600000       1.74900000
+ 166 56 1 -1.1128       9.35300001      16.12500000      13.92699999
+ 167 56 2 0.5564        9.93799999      17.59399999      14.61800001
+ 168 56 2 0.5564        9.51799999      16.36000001      12.24400000
+ 169 57 1 -1.1128      10.37099999      11.10700000      14.26800000
+ 170 57 2 0.5564        9.64399999      10.40600001      15.85899999
+ 171 57 2 0.5564        9.43400000      12.52300000      14.11699999
+ 172 58 1 -1.1128       3.35100000      22.76899999      20.19599999
+ 173 58 2 0.5564        2.05500001      23.68600001      21.50300001
+ 174 58 2 0.5564        2.45200000      21.40100000      19.41300000
+ 175 59 1 -1.1128       6.83600000      21.32900000      23.19899999
+ 176 59 2 0.5564        8.24900001      20.84799999      22.32000001
+ 177 59 2 0.5564        5.66800001      21.84099999      21.88600000
+ 178 60 1 -1.1128       4.60399999      15.64900000      30.04300000
+ 179 60 2 0.5564        6.45300001      15.21699999      30.20700000
+ 180 60 2 0.5564        3.82200001      14.76199999      31.56200000
+ 181 61 1 -1.1128       7.12500000      19.97600001       9.42100001
+ 182 61 2 0.5564        5.91800000      20.45300001      10.72999999
+ 183 61 2 0.5564        8.09899999      21.49600001       9.49100000
+ 184 62 1 -1.1128       9.06299999      25.91200001      13.18600000
+ 185 62 2 0.5564       10.34999999      26.57199999      12.36700001
+ 186 62 2 0.5564        9.67999999      24.36700001      13.69700001
+ 187 63 1 -1.1128       8.02200000      22.34299999      17.04199999
+ 188 63 2 0.5564        9.14400000      23.36700001      18.07399999
+ 189 63 2 0.5564        6.56200000      23.46200000      16.85199999
+ 190 64 1 -1.1128      10.76199999      26.28499999      19.96299999
+ 191 64 2 0.5564       11.03600000      27.96599999      20.53800000
+ 192 64 2 0.5564       11.07800000      25.40100000      21.45600000
+ 193 65 1 -1.1128       9.15800000      22.90199999      28.39100000
+ 194 65 2 0.5564        8.21900000      23.52800001      27.08499999
+ 195 65 2 0.5564        8.08900000      21.76000000      29.50900000
+ 196 66 1 -1.1128       6.21900000      20.15800000      31.92100000
+ 197 66 2 0.5564        5.63500000      18.51099999      31.16100000
+ 198 66 2 0.5564        7.53000000      19.62400000      33.07100000
+ 199 67 1 -1.1128      11.19100001      31.50900000       2.61700000
+ 200 67 2 0.5564       10.46000001      32.21399999       4.10800000
+ 201 67 2 0.5564       13.17600000      31.75099999       2.57700000
+ 202 68 1 -1.1128       4.74799999       0.05500001       8.60500000
+ 203 68 2 0.5564        5.38000000       0.51700000      10.18300000
+ 204 68 2 0.5564        6.05000000      -0.30600001       7.48000000
+ 205 69 1 -1.1128       8.69500000      30.80899999      15.73100000
+ 206 69 2 0.5564        9.18899999      32.10300000      14.49500000
+ 207 69 2 0.5564        8.44699999      29.06900000      14.86800000
+ 208 70 1 -1.1128      10.12799999      31.40200000      20.76599999
+ 209 70 2 0.5564        9.45600000      30.90500001      19.15500000
+ 210 70 2 0.5564        9.01999999      32.73100000      21.41500000
+ 211 71 1 -1.1128      12.23800001      30.16200000      25.83699999
+ 212 71 2 0.5564       11.41799999      30.90800001      27.10999999
+ 213 71 2 0.5564       12.39600001      31.33100001      24.67800000
+ 214 72 1 -1.1128      10.39500000      32.53700000      30.62400000
+ 215 72 2 0.5564       11.04199999      34.33899999      30.75099999
+ 216 72 2 0.5564       11.37800001      31.48599999      31.53800000
+ 217 73 1 -1.1128      10.43800000       3.62599999       5.08700001
+ 218 73 2 0.5564       12.43500001       4.08200000       5.13600000
+ 219 73 2 0.5564        9.82200001       4.28400000       6.68100000
+ 220 74 1 -1.1128      14.76199999       3.40100000      13.77599999
+ 221 74 2 0.5564       16.51799999       3.82400000      13.37600000
+ 222 74 2 0.5564       13.75200000       4.75700000      12.96400000
+ 223 75 1 -1.1128      12.38199999       1.01200001      17.64300001
+ 224 75 2 0.5564       13.34599999       1.99700000      16.44400000
+ 225 75 2 0.5564       11.93100000       2.13300000      18.99800001
+ 226 76 1 -1.1128      15.27799999       1.29300000      24.55900000
+ 227 76 2 0.5564       16.07100000       0.94600000      26.36500000
+ 228 76 2 0.5564       15.79399999       0.19899999      23.49900000
+ 229 77 1 -1.1128      22.22600000      31.62700000      24.71199999
+ 230 77 2 0.5564       23.33800001      32.59500000      23.87600001
+ 231 77 2 0.5564       22.16100000      30.05300000      24.13200000
+ 232 78 1 -1.1128      15.63999999       1.84700001      32.71700000
+ 233 78 2 0.5564       17.48800000       2.47300000      31.87400000
+ 234 78 2 0.5564       16.40300001       0.86900001      34.26700001
+ 235 79 1 -1.1128      14.85800001      10.19899999       2.75400001
+ 236 79 2 0.5564       13.36000001      10.71199999       2.28199999
+ 237 79 2 0.5564       14.56000000       9.31600000       4.55900000
+ 238 80 1 -1.1128      15.71700000       8.46900000      10.73900000
+ 239 80 2 0.5564       17.32300000       9.58100000      10.87500000
+ 240 80 2 0.5564       14.57400000       9.63100000      10.22099999
+ 241 81 1 -1.1128      15.24800000      10.39800000      16.52500001
+ 242 81 2 0.5564       16.32400001       9.18100001      16.14899999
+ 243 81 2 0.5564       14.17200000      10.48800000      15.09800001
+ 244 82 1 -1.1128      13.22600000       8.43800000      20.80100001
+ 245 82 2 0.5564       14.04300000       8.99600000      19.29500001
+ 246 82 2 0.5564       14.66100001       7.80200000      22.09300000
+ 247 83 1 -1.1128      10.17300001      10.96100000      25.87500000
+ 248 83 2 0.5564       11.47700000      10.22300000      26.94000000
+ 249 83 2 0.5564       11.26900000      10.73800000      24.34299999
+ 250 84 1 -1.1128      12.79200000       7.73699999      29.17300001
+ 251 84 2 0.5564       12.19899999       6.03799999      29.47499999
+ 252 84 2 0.5564       14.42700000       7.44999999      29.61700000
+ 253 85 1 -1.1128      15.18000000      19.49800000       3.57800000
+ 254 85 2 0.5564       14.88300001      17.59600001       4.08000001
+ 255 85 2 0.5564       16.75400001      19.57899999       2.62599999
+ 256 86 1 -1.1128      12.51700000      11.09300000       7.70099999
+ 257 86 2 0.5564       12.22400001      12.77800000       7.55500000
+ 258 86 2 0.5564       11.15000000      10.39299999       7.05700000
+ 259 87 1 -1.1128      16.26600000      16.27099999      10.75800001
+ 260 87 2 0.5564       16.50700001      15.79500000      12.76800001
+ 261 87 2 0.5564       17.72500001      16.97699999      10.29200001
+ 262 88 1 -1.1128      14.06900000      18.39900001      18.89700000
+ 263 88 2 0.5564       15.51300000      17.52300000      18.15500000
+ 264 88 2 0.5564       14.95800001      18.70900000      20.67300000
+ 265 89 1 -1.1128      14.09899999      15.48000000      25.51000001
+ 266 89 2 0.5564       13.69800000      16.87200001      26.93799999
+ 267 89 2 0.5564       12.56700000      15.37900000      24.44400000
+ 268 90 1 -1.1128      13.30900000      17.57400000      30.29200001
+ 269 90 2 0.5564       14.93700001      16.93399999      30.81000000
+ 270 90 2 0.5564       13.96900001      19.49400000      30.01200001
+ 271 91 1 -1.1128      18.37099999      23.25699999       0.92500000
+ 272 91 2 0.5564       19.47899999      23.48000000       2.32099999
+ 273 91 2 0.5564       19.08700001      24.32499999      -0.36900000
+ 274 92 1 -1.1128      12.10000000      21.72999999      11.35500000
+ 275 92 2 0.5564       13.14100001      22.28700000      12.74300001
+ 276 92 2 0.5564       13.46700001      22.23600000      10.24400000
+ 277 93 1 -1.1128      12.16300001      23.29000000      23.59699999
+ 278 93 2 0.5564       11.32400001      22.73600001      24.94900000
+ 279 93 2 0.5564       13.88200000      22.87200001      23.84000001
+ 280 94 1 -1.1128      20.17300001      26.76100001      22.62800000
+ 281 94 2 0.5564       20.20600001      26.53200001      20.79200000
+ 282 94 2 0.5564       21.55600000      25.74200000      23.38899999
+ 283 95 1 -1.1128      16.70099999      21.16500000      22.60500000
+ 284 95 2 0.5564       18.02800000      20.68600001      23.84799999
+ 285 95 2 0.5564       17.10400000      22.86599999      21.94900000
+ 286 96 1 -1.1128      11.39100000      26.46099999      33.70499999
+ 287 96 2 0.5564        9.84099999      27.19199999      34.04800001
+ 288 96 2 0.5564       11.77599999      25.53999999      35.24300000
+ 289 97 1 -1.1128       9.89799999      25.98900000       4.55300001
+ 290 97 2 0.5564        8.90199999      26.13099999       6.03900000
+ 291 97 2 0.5564       10.28700000      27.80600000       4.37600000
+ 292 98 1 -1.1128      14.30800000      26.96000000      10.87699999
+ 293 98 2 0.5564       15.30200000      27.40500000      12.17300001
+ 294 98 2 0.5564       15.46300000      26.15100000       9.63299999
+ 295 99 1 -1.1128      13.43300000      22.96000000      16.90400000
+ 296 99 2 0.5564       13.40900000      24.13099999      18.13200000
+ 297 99 2 0.5564       13.62400000      21.19100001      17.52000000
+ 298 100 1 -1.1128      16.40900000      26.76800001      26.87500000
+ 299 100 2 0.5564       17.58999999      26.98700001      25.43100000
+ 300 100 2 0.5564       14.75099999      27.70300000      26.23000000
+ 301 101 1 -1.1128      14.40500000      22.73299999      29.89200000
+ 302 101 2 0.5564       15.42300000      23.07900000      28.49400000
+ 303 101 2 0.5564       12.82600001      23.25900000      29.41600000
+ 304 102 1 -1.1128       6.90500001      29.40800000       0.74900000
+ 305 102 2 0.5564        8.42800001      30.48300000       1.56700000
+ 306 102 2 0.5564        6.35300001      30.81400000      -0.44400000
+ 307 103 1 -1.1128       9.18899999      34.15900001       6.50900000
+ 308 103 2 0.5564       10.19800000      34.19300000       8.00199999
+ 309 103 2 0.5564        9.89000001      35.69200000       5.78500000
+ 310 104 1 -1.1128      14.25600001      32.31600000       9.36900000
+ 311 104 2 0.5564       15.73299999      32.86700000       9.48599999
+ 312 104 2 0.5564       14.75400001      30.67000000      10.09000000
+ 313 105 1 -1.1128      14.71400000      30.84099999      16.51600000
+ 314 105 2 0.5564       13.74799999      29.55099999      17.27900000
+ 315 105 2 0.5564       13.21800000      31.93300001      16.61400001
+ 316 106 1 -1.1128      18.40900000      33.64100000      20.61100001
+ 317 106 2 0.5564       19.60099999      32.27400001      21.11500000
+ 318 106 2 0.5564       17.36000001      32.65500000      19.51799999
+ 319 107 1 -1.1128      16.06200001      28.63800000      32.20700000
+ 320 107 2 0.5564       14.64800000      27.95800001      33.25299999
+ 321 107 2 0.5564       15.75200000      28.01400000      30.52199999
+ 322 108 1 -1.1128      16.20000000      30.89499999       1.47300000
+ 323 108 2 0.5564       16.62599999      29.96800000      -0.13000001
+ 324 108 2 0.5564       17.16699999      29.83300001       2.92699999
+ 325 109 1 -1.1128      20.27799999       3.52899999       6.04800001
+ 326 109 2 0.5564       20.97699999       3.61100001       4.57500001
+ 327 109 2 0.5564       21.31200000       4.51300000       7.25100000
+ 328 110 1 -1.1128      23.07900000       5.77800000      10.40800000
+ 329 110 2 0.5564       24.65000001       6.25900000      10.83800000
+ 330 110 2 0.5564       22.34200001       7.60900000      10.17799999
+ 331 111 1 -1.1128      19.58100000       2.03099999      12.10999999
+ 332 111 2 0.5564       19.03900000       1.08200000      10.44000000
+ 333 111 2 0.5564       21.14100001       2.99100001      11.85100001
+ 334 112 1 -1.1128      22.00500001       3.22300000      23.17799999
+ 335 112 2 0.5564       21.42899999       4.09000000      24.55399999
+ 336 112 2 0.5564       20.65400001       1.79099999      22.71100001
+ 337 113 1 -1.1128      16.63000000       6.42200000      23.79200000
+ 338 113 2 0.5564       16.21900000       4.80400001      24.40600001
+ 339 113 2 0.5564       17.06600001       7.12799999      25.28199999
+ 340 114 1 -1.1128      21.67599999       5.56400001      28.15800000
+ 341 114 2 0.5564       20.65799999       6.71700000      29.18499999
+ 342 114 2 0.5564       23.41300000       5.82800000      28.99600000
+ 343 115 1 -1.1128      15.25699999       5.26500000       5.62599999
+ 344 115 2 0.5564       16.91400000       4.51900000       5.48999999
+ 345 115 2 0.5564       15.14400000       6.15000000       6.97200000
+ 346 116 1 -1.1128      20.13700000      11.08200000      10.43700000
+ 347 116 2 0.5564       20.02100000      10.94700000       8.73299999
+ 348 116 2 0.5564       21.02500000      12.55500000      10.85300000
+ 349 117 1 -1.1128      23.08900000      14.62700000      12.43700000
+ 350 117 2 0.5564       24.71600000      15.25400000      12.73600001
+ 351 117 2 0.5564       23.28400000      13.22799999      13.65300000
+ 352 118 1 -1.1128      24.08300000      12.64900000      22.56600000
+ 353 118 2 0.5564       22.39700000      12.66300000      23.04199999
+ 354 118 2 0.5564       24.90100001      13.85100001      23.56499999
+ 355 119 1 -1.1128      17.86500001       7.90899999      30.03600000
+ 356 119 2 0.5564       17.50900000       8.04499999      31.98200000
+ 357 119 2 0.5564       18.07800000       9.58200001      29.31799999
+ 358 120 1 -1.1128      18.82400000       8.48599999       0.10400000
+ 359 120 2 0.5564       19.99700000      10.19100001      -0.05700000
+ 360 120 2 0.5564       17.07700001       8.99800001       0.77900001
+ 361 121 1 -1.1128      20.12200000       9.14300000       5.34299999
+ 362 121 2 0.5564       19.37300000       8.81899999       3.82100000
+ 363 121 2 0.5564       21.99800001       8.77599999       5.12799999
+ 364 122 1 -1.1128      16.41300000      14.45900000       5.85499999
+ 365 122 2 0.5564       15.53599999      13.00700000       5.23899999
+ 366 122 2 0.5564       16.00599999      14.72500001       7.73699999
+ 367 123 1 -1.1128      17.56099999      15.06600001      15.65400001
+ 368 123 2 0.5564       17.57500001      13.39800000      16.05500001
+ 369 123 2 0.5564       18.97800000      15.82800000      16.39999999
+ 370 124 1 -1.1128      26.37400001      17.04700000      24.81700000
+ 371 124 2 0.5564       27.98300000      17.09800001      25.63200001
+ 372 124 2 0.5564       25.62900001      18.75099999      24.91900001
+ 373 125 1 -1.1128      19.78400000      12.96000000      28.70600000
+ 374 125 2 0.5564       21.66199999      13.05500001      28.87100000
+ 375 125 2 0.5564       19.54500000      14.06999999      27.14300000
+ 376 126 1 -1.1128      17.89099999      16.73299999      32.49900000
+ 377 126 2 0.5564       18.32700000      15.24000000      31.27700001
+ 378 126 2 0.5564       18.63299999      18.33500001      31.69300001
+ 379 127 1 -1.1128      23.73299999      23.02399999       1.66300000
+ 380 127 2 0.5564       24.80000000      24.05199999       2.77599999
+ 381 127 2 0.5564       24.69300001      22.61800001       0.19800000
+ 382 128 1 -1.1128      20.78900000      18.44000000       9.44299999
+ 383 128 2 0.5564       20.76599999      17.25699999       7.88100000
+ 384 128 2 0.5564       21.89600000      17.34500000      10.38500001
+ 385 129 1 -1.1128      21.57400000      17.49299999      17.83800000
+ 386 129 2 0.5564       20.59699999      18.95500001      17.21800000
+ 387 129 2 0.5564       22.53800000      16.87400000      16.25100000
+ 388 130 1 -1.1128      19.16800000      14.74799999      24.13099999
+ 389 130 2 0.5564       19.71100001      16.39000000      23.71199999
+ 390 130 2 0.5564       17.42899999      14.69500000      24.40300001
+ 391 131 1 -1.1128      22.14899999      20.19800000      24.97699999
+ 392 131 2 0.5564       21.63900001      20.92400000      26.48599999
+ 393 131 2 0.5564       22.65600000      21.65700001      24.41099999
+ 394 132 1 -1.1128      20.56499999      20.79200000      29.60000001
+ 395 132 2 0.5564       22.26399999      20.40900000      30.21399999
+ 396 132 2 0.5564       20.54800000      22.40800000      30.59699999
+ 397 133 1 -1.1128      20.80200000      26.54699999       9.61499999
+ 398 133 2 0.5564       20.09899999      27.98399999       8.33800001
+ 399 133 2 0.5564       21.27700001      27.53900001      11.32499999
+ 400 134 1 -1.1128      16.28300000      23.58900001       7.77900001
+ 401 134 2 0.5564       16.09300000      21.97300001       6.71199999
+ 402 134 2 0.5564       17.90100001      22.97100000       8.15400000
+ 403 135 1 -1.1128      18.46900000      29.79799999      13.56800001
+ 404 135 2 0.5564       19.71199999      31.21600000      13.50600000
+ 405 135 2 0.5564       16.87200001      30.34299999      14.39600001
+ 406 136 1 -1.1128      18.79000001      21.71199999      16.06000000
+ 407 136 2 0.5564       19.87800000      23.09000000      16.48500001
+ 408 136 2 0.5564       17.20100000      22.32600000      15.81899999
+ 409 137 1 -1.1128      21.74700001      26.08400001      16.34900001
+ 410 137 2 0.5564       20.78300001      27.02100000      15.29999999
+ 411 137 2 0.5564       22.70499999      27.32799999      17.20600001
+ 412 138 1 -1.1128      20.76899999      26.21100000      32.05000000
+ 413 138 2 0.5564       21.48800000      27.40399999      33.32799999
+ 414 138 2 0.5564       18.98900000      26.71000000      32.14500001
+ 415 139 1 -1.1128      19.82000000      29.18100001       5.55900000
+ 416 139 2 0.5564       20.99100001      29.50900000       4.10900001
+ 417 139 2 0.5564       19.43100000      31.01800000       6.22099999
+ 418 140 1 -1.1128      19.24000000      33.86700000       7.99300000
+ 419 140 2 0.5564       19.10700000      35.03900000       6.60399999
+ 420 140 2 0.5564       20.69700001      33.67100000       9.06299999
+ 421 141 1 -1.1128      22.51099999      34.97600001      15.79300000
+ 422 141 2 0.5564       23.71600000      36.16300001      16.60300000
+ 423 141 2 0.5564       21.69900000      36.15000000      14.46700001
+ 424 142 1 -1.1128      22.62199999      30.28400000      19.06900000
+ 425 142 2 0.5564       22.04899999      31.35100000      17.72500001
+ 426 142 2 0.5564       24.41099999      30.77299999      19.57599999
+ 427 143 1 -1.1128      18.63900001      33.61100001      28.36900000
+ 428 143 2 0.5564       18.22600000      32.15900001      29.10300000
+ 429 143 2 0.5564       19.90600000      33.00800000      27.15800000
+ 430 144 1 -1.1128      22.52000000       1.32499999      31.92600001
+ 431 144 2 0.5564       22.80300000       2.66800001      30.79600000
+ 432 144 2 0.5564       21.04499999       0.42499999      31.12200000
+ 433 145 1 -1.1128      21.75400001       3.78900000       1.15900001
+ 434 145 2 0.5564       22.08499999       2.78500000      -0.18000000
+ 435 145 2 0.5564       20.85000000       5.17500000       0.61000000
+ 436 146 1 -1.1128      28.45699999       5.53900001      12.13300000
+ 437 146 2 0.5564       29.48900001       4.39000000      11.18200000
+ 438 146 2 0.5564       29.16100000       7.13099999      12.58700000
+ 439 147 1 -1.1128      22.49500000       5.96599999      17.32400001
+ 440 147 2 0.5564       24.37700000       5.37900000      17.39299999
+ 441 147 2 0.5564       21.90600000       5.49100000      18.85700000
+ 442 148 1 -1.1128      28.12799999       3.30400000      22.28700000
+ 443 148 2 0.5564       28.12300001       2.99899999      20.49100000
+ 444 148 2 0.5564       26.53299999       3.35500000      22.87600001
+ 445 149 1 -1.1128      28.37800001      10.45500000      27.26600000
+ 446 149 2 0.5564       30.01900001      10.29200001      28.05100000
+ 447 149 2 0.5564       28.63500000      10.03900000      25.46300000
+ 448 150 1 -1.1128      27.03099999       8.35300001      34.80600000
+ 449 150 2 0.5564       26.11600001       9.98399999      34.57100001
+ 450 150 2 0.5564       28.68500000       8.95100001      34.73900000
+ 451 151 1 -1.1128      24.95100001       8.15999999       4.45399999
+ 452 151 2 0.5564       25.93000001       9.61600000       5.15999999
+ 453 151 2 0.5564       25.94700000       7.99400001       2.72400000
+ 454 152 1 -1.1128      26.93700001      12.43599999       6.86900001
+ 455 152 2 0.5564       25.49200001      13.28400000       6.70799999
+ 456 152 2 0.5564       27.68900000      13.33199999       8.26600000
+ 457 153 1 -1.1128      23.36500000      11.21399999      16.93300001
+ 458 153 2 0.5564       22.24700000       9.74399999      16.78900000
+ 459 153 2 0.5564       23.26399999      12.03500000      18.53900001
+ 460 154 1 -1.1128      28.32099999       8.75900000      22.15800000
+ 461 154 2 0.5564       27.66199999       6.89499999      22.48200001
+ 462 154 2 0.5564       26.97100000       9.71000000      21.90199999
+ 463 155 1 -1.1128      27.07100000       6.10900001      29.55500000
+ 464 155 2 0.5564       27.59100000       7.66300000      28.85700000
+ 465 155 2 0.5564       27.30400000       6.32000001      31.26100000
+ 466 156 1 -1.1128      22.47400000      11.70400001      34.63999999
+ 467 156 2 0.5564       22.75200000      13.30400000      35.58400000
+ 468 156 2 0.5564       22.84000001      12.09000000      33.03000001
+ 469 157 1 -1.1128      21.65600000      14.97100000       5.61499999
+ 470 157 2 0.5564       21.68999999      15.86000000       3.97699999
+ 471 157 2 0.5564       19.96400000      14.22500000       5.77400000
+ 472 158 1 -1.1128      28.53900001      21.49200001       9.82000000
+ 473 158 2 0.5564       27.28800001      22.18100001       8.68800000
+ 474 158 2 0.5564       28.06500000      22.42000000      11.60200000
+ 475 159 1 -1.1128      28.36399999      16.01999999      11.10900001
+ 476 159 2 0.5564       30.03300000      16.64900000      12.08900000
+ 477 159 2 0.5564       28.45600000      17.44000000      10.08200000
+ 478 160 1 -1.1128       0.05400000      13.68600001      18.10300000
+ 479 160 2 0.5564       -1.71400000      12.92800000      18.84099999
+ 480 160 2 0.5564        1.00800000      12.42899999      17.38300000
+ 481 161 1 -1.1128      24.63600001      12.89400001      29.95700000
+ 482 161 2 0.5564       25.90600000      13.91400000      31.18300000
+ 483 161 2 0.5564       25.64100000      11.60900000      29.16200000
+ 484 162 1 -1.1128      21.54800000      17.25000000       0.74900000
+ 485 162 2 0.5564       21.84300000      19.02600000       0.90500001
+ 486 162 2 0.5564       20.38500001      16.71600000      -0.69700001
+ 487 163 1 -1.1128      26.09499999      27.27400001       4.52000000
+ 488 163 2 0.5564       27.88900000      26.45800000       4.50500000
+ 489 163 2 0.5564       25.64800000      26.96999999       6.16500000
+ 490 164 1 -1.1128      23.61000000      22.51499999       8.00800000
+ 491 164 2 0.5564       22.65300000      21.18700000       8.73900000
+ 492 164 2 0.5564       22.28600000      24.09499999       8.44400000
+ 493 165 1 -1.1128      27.35500000      18.92900000      18.18000000
+ 494 165 2 0.5564       27.20000000      20.34900001      17.15500000
+ 495 165 2 0.5564       25.57899999      18.32200000      18.77000000
+ 496 166 1 -1.1128      26.76500001      23.63299999      14.44400000
+ 497 166 2 0.5564       27.44100000      25.29800000      13.65099999
+ 498 166 2 0.5564       25.08600000      24.25600001      14.74900000
+ 499 167 1 -1.1128      31.47800001      20.76899999      20.98600000
+ 500 167 2 0.5564       30.44000000      22.50900000      21.13499999
+ 501 167 2 0.5564       30.56700000      19.65600000      20.04300000
+ 502 168 1 -1.1128      24.81199999      20.41200000      32.66800001
+ 503 168 2 0.5564       26.24199999      21.47800001      31.87400000
+ 504 168 2 0.5564       25.78699999      19.02300001      33.15800000
+ 505 169 1 -1.1128      22.10500001      29.07600000       0.92800000
+ 506 169 2 0.5564       23.29599999      27.92299999       1.73900000
+ 507 169 2 0.5564       22.62300000      30.99400001       0.88200000
+ 508 170 1 -1.1128      29.57199999      31.25600001       8.62599999
+ 509 170 2 0.5564       30.79500000      30.20299999       7.73600001
+ 510 170 2 0.5564       28.27700001      31.51900000       7.25999999
+ 511 171 1 -1.1128      31.81700000      34.84300000      18.28300000
+ 512 171 2 0.5564       32.43800000      34.38899999      16.47400000
+ 513 171 2 0.5564       32.74300001      36.42200000      18.34100000
+ 514 172 1 -1.1128      27.91500001      25.60099999      19.03300000
+ 515 172 2 0.5564       29.35800000      26.56099999      19.19000000
+ 516 172 2 0.5564       28.14800001      24.42899999      17.53000000
+ 517 173 1 -1.1128      24.54800000      24.65400001      24.02500000
+ 518 173 2 0.5564       25.52800001      25.63500000      22.82400000
+ 519 173 2 0.5564       25.29999999      25.20000000      25.64500000
+ 520 174 1 -1.1128      28.53999999      22.92200000      30.37000000
+ 521 174 2 0.5564       27.41399999      24.09600000      29.78100000
+ 522 174 2 0.5564       29.67400000      23.91400000      31.87299999
+ 523 175 1 -1.1128      24.96900001      33.62300000       1.01400000
+ 524 175 2 0.5564       26.52100001      33.05800000       1.51799999
+ 525 175 2 0.5564       24.99000000      34.32200000      -0.68299999
+ 526 176 1 -1.1128      23.07500000      32.17099999      11.32400001
+ 527 176 2 0.5564       23.31600000      32.77500000      13.09700000
+ 528 176 2 0.5564       24.46000001      33.20299999      10.66199999
+ 529 177 1 -1.1128      27.49699999       2.73600001      17.22400001
+ 530 177 2 0.5564       28.39700000       3.41500000      15.71500001
+ 531 177 2 0.5564       28.23400001       1.23300000      17.41200000
+ 532 178 1 -1.1128      26.36900000      33.06000000      22.07700001
+ 533 178 2 0.5564       26.17000001      34.74600000      22.26399999
+ 534 178 2 0.5564       27.59200000      32.40399999      23.32099999
+ 535 179 1 -1.1128      30.22099999      30.95000000      25.84300000
+ 536 179 2 0.5564       30.30500000      29.03799999      26.20800000
+ 537 179 2 0.5564       30.36300001      31.97900000      27.41399999
+ 538 180 1 -1.1128      24.97300001      26.73200000      28.60700001
+ 539 180 2 0.5564       25.38500001      28.36900000      29.24800000
+ 540 180 2 0.5564       23.33000000      26.59699999      29.23400001
+ 541 181 1 -1.1128      32.16500000       4.85700000       2.25800000
+ 542 181 2 0.5564       32.41700001       6.19500001       1.15700000
+ 543 181 2 0.5564       32.61499999       3.72700000       1.11200000
+ 544 182 1 -1.1128      28.06699999       3.53299999       5.21699999
+ 545 182 2 0.5564       26.96000000       4.44699999       4.15800000
+ 546 182 2 0.5564       29.87500000       3.86300000       4.44800000
+ 547 183 1 -1.1128      33.27900000       2.78200000      13.02800000
+ 548 183 2 0.5564       33.70799999       3.95500001      11.81700000
+ 549 183 2 0.5564       33.65600000       3.54500000      14.63100000
+ 550 184 1 -1.1128      34.27799999       4.94400001      17.49200001
+ 551 184 2 0.5564       33.43800000       6.56300000      17.87600001
+ 552 184 2 0.5564       34.90600000       4.45200000      18.99499999
+ 553 185 1 -1.1128      32.36300001       1.90800001      26.09199999
+ 554 185 2 0.5564       31.94099999       1.68299999      24.26800000
+ 555 185 2 0.5564       33.85000000       1.39000000      26.90400000
+ 556 186 1 -1.1128      27.98200000       0.41799999      28.24100000
+ 557 186 2 0.5564       27.51600000       2.08000001      28.30900000
+ 558 186 2 0.5564       29.59300001       0.17600000      27.29900001
+ 559 187 1 -1.1128      28.84500000      14.67200001       2.72400000
+ 560 187 2 0.5564       27.96299999      13.93000001       4.13900000
+ 561 187 2 0.5564       30.38599999      15.71400000       3.37900000
+ 562 188 1 -1.1128      28.08300000      10.61800001      14.29800000
+ 563 188 2 0.5564       28.62300000      12.15999999      13.29300000
+ 564 188 2 0.5564       26.48599999      11.01500000      15.37900000
+ 565 189 1 -1.1128      33.86700000      10.54500000      13.30600001
+ 566 189 2 0.5564       35.16500000       9.61200000      13.81000000
+ 567 189 2 0.5564       33.61499999      10.27000001      11.51300000
+ 568 190 1 -1.1128      31.79000001       9.69600000      18.22300000
+ 569 190 2 0.5564       30.48400000       9.33400000      19.42100001
+ 570 190 2 0.5564       30.83399999      10.09600000      16.92900000
+ 571 191 1 -1.1128      30.14100001      15.00599999      21.53200001
+ 572 191 2 0.5564       28.56499999      15.59399999      22.09899999
+ 573 191 2 0.5564       30.94200000      14.25299999      23.07700001
+ 574 192 1 -1.1128      32.79799999      10.73200000      30.67999999
+ 575 192 2 0.5564       34.07300001       9.52800001      30.79900000
+ 576 192 2 0.5564       32.99100001      11.51200000      28.98300000
+ 577 193 1 -1.1128      33.65200000      16.26500000       5.08600000
+ 578 193 2 0.5564       35.39900001      16.23899999       4.72999999
+ 579 193 2 0.5564       33.50300001      17.93900000       5.63100000
+ 580 194 1 -1.1128      31.94700000      10.79900000       7.94300000
+ 581 194 2 0.5564       29.89400001      10.54900000       7.61899999
+ 582 194 2 0.5564       32.27099999      12.41399999       7.07500000
+ 583 195 1 -1.1128       0.32900000      15.51600000      11.74600000
+ 584 195 2 0.5564       -0.44600001      14.24900001      12.93900000
+ 585 195 2 0.5564       -0.68500000      17.01800000      11.93500000
+ 586 196 1 -1.1128       4.26200000      19.16500000      14.30800000
+ 587 196 2 0.5564        3.57899999      17.69100000      14.91999999
+ 588 196 2 0.5564        5.72299999      19.18300000      15.20400000
+ 589 197 1 -1.1128      32.99499999      13.54600001      25.94800001
+ 590 197 2 0.5564       32.16699999      15.06000000      26.78699999
+ 591 197 2 0.5564       34.42499999      13.80000000      25.00700000
+ 592 198 1 -1.1128       1.77299999      13.52400000      34.03700001
+ 593 198 2 0.5564        0.22700001      14.40900000      33.44600001
+ 594 198 2 0.5564        2.16699999      14.67000000      35.51099999
+ 595 199 1 -1.1128      33.02900000      20.52899999       7.24700000
+ 596 199 2 0.5564       34.38800000      21.41399999       8.00300000
+ 597 199 2 0.5564       31.45100000      20.83100000       8.18200000
+ 598 200 1 -1.1128       2.03700001      24.25000000      10.25100000
+ 599 200 2 0.5564        3.74300001      25.00800000       9.87600001
+ 600 200 2 0.5564        1.89400001      25.04300000      11.90300000
+ 601 201 1 -1.1128      32.75300000      19.25900000      13.97600001
+ 602 201 2 0.5564       32.79200000      20.88600000      13.79200000
+ 603 201 2 0.5564       34.33400000      18.79900000      14.97600001
+ 604 202 1 -1.1128       0.39600001      18.67300000      18.69900000
+ 605 202 2 0.5564       -1.21100000      18.95000000      19.12700001
+ 606 202 2 0.5564        0.46900000      16.97699999      18.43599999
+ 607 203 1 -1.1128      30.85499999      18.37000000      27.95899999
+ 608 203 2 0.5564       29.75900000      19.68100000      28.68999999
+ 609 203 2 0.5564       32.10300000      19.47700000      26.76300000
+ 610 204 1 -1.1128      27.72299999      15.99200000      33.09100001
+ 611 204 2 0.5564       29.39000000      16.42300000      32.19199999
+ 612 204 2 0.5564       27.80100001      15.85899999      34.80400001
+ 613 205 1 -1.1128      31.06800000      27.89499999       3.34800000
+ 614 205 2 0.5564       32.51700000      27.82500000       4.61000000
+ 615 205 2 0.5564       31.52899999      29.45900000       2.32400001
+ 616 206 1 -1.1128      35.03900000      28.00800000       6.66300000
+ 617 206 2 0.5564       35.96599999      26.93399999       7.68299999
+ 618 206 2 0.5564       36.05500001      28.33600000       5.33600000
+ 619 207 1 -1.1128      29.35600001      28.19599999      13.02500000
+ 620 207 2 0.5564       29.20999999      29.33500001      14.58900001
+ 621 207 2 0.5564       28.87400000      29.62900001      11.86700000
+ 622 208 1 -1.1128      32.38599999      28.43400000      18.96100000
+ 623 208 2 0.5564       33.36799999      28.57400000      20.41099999
+ 624 208 2 0.5564       33.41000001      27.40600001      17.94900000
+ 625 209 1 -1.1128      30.89799999      25.39000000      25.79900000
+ 626 209 2 0.5564       32.36900000      25.91299999      24.58000000
+ 627 209 2 0.5564       31.31700001      24.07500000      27.02900000
+ 628 210 1 -1.1128      32.25900000      25.61100001      33.10400000
+ 629 210 2 0.5564       32.23800001      25.73600001      34.80600000
+ 630 210 2 0.5564       33.91999999      25.04199999      32.77500000
+ 631 211 1 -1.1128      30.29000000      32.64500000       1.34100000
+ 632 211 2 0.5564       29.94900000      32.79300000      -0.43000000
+ 633 211 2 0.5564       31.76199999      33.34000000       1.84700001
+ 634 212 1 -1.1128      25.53599999      34.23499999       6.46900000
+ 635 212 2 0.5564       25.71600000      36.05900001       6.65099999
+ 636 212 2 0.5564       25.28300000      33.86599999       4.89499999
+ 637 213 1 -1.1128      31.67400000      33.16100000      13.10599999
+ 638 213 2 0.5564       31.79300000      34.86300000      13.28100001
+ 639 213 2 0.5564       30.42499999      32.92800000      11.78300001
+ 640 214 1 -1.1128      33.84400001      32.66800001      22.29599999
+ 641 214 2 0.5564       32.75000000      32.23400001      23.52400000
+ 642 214 2 0.5564       32.91700000      32.87500000      20.73600001
+ 643 215 1 -1.1128      31.60300000      30.54200000      30.80499999
+ 644 215 2 0.5564       33.45100000      30.80400001      30.46799999
+ 645 215 2 0.5564       31.57500001      28.81599999      31.75600000
+ 646 216 1 -1.1128      26.29500001      31.23499999      30.59900000
+ 647 216 2 0.5564       27.83399999      30.51499999      30.60700001
+ 648 216 2 0.5564       26.36200000      32.91999999      29.85600000
+
+Bonds
+
+ 1 1 1 2
+ 2 1 1 3
+ 3 1 4 5
+ 4 1 4 6
+ 5 1 7 8
+ 6 1 7 9
+ 7 1 10 11
+ 8 1 10 12
+ 9 1 13 14
+ 10 1 13 15
+ 11 1 16 17
+ 12 1 16 18
+ 13 1 19 20
+ 14 1 19 21
+ 15 1 22 23
+ 16 1 22 24
+ 17 1 25 26
+ 18 1 25 27
+ 19 1 28 29
+ 20 1 28 30
+ 21 1 31 32
+ 22 1 31 33
+ 23 1 34 35
+ 24 1 34 36
+ 25 1 37 38
+ 26 1 37 39
+ 27 1 40 41
+ 28 1 40 42
+ 29 1 43 44
+ 30 1 43 45
+ 31 1 46 47
+ 32 1 46 48
+ 33 1 49 50
+ 34 1 49 51
+ 35 1 52 53
+ 36 1 52 54
+ 37 1 55 56
+ 38 1 55 57
+ 39 1 58 59
+ 40 1 58 60
+ 41 1 61 62
+ 42 1 61 63
+ 43 1 64 65
+ 44 1 64 66
+ 45 1 67 68
+ 46 1 67 69
+ 47 1 70 71
+ 48 1 70 72
+ 49 1 73 74
+ 50 1 73 75
+ 51 1 76 77
+ 52 1 76 78
+ 53 1 79 80
+ 54 1 79 81
+ 55 1 82 83
+ 56 1 82 84
+ 57 1 85 86
+ 58 1 85 87
+ 59 1 88 89
+ 60 1 88 90
+ 61 1 91 92
+ 62 1 91 93
+ 63 1 94 95
+ 64 1 94 96
+ 65 1 97 98
+ 66 1 97 99
+ 67 1 100 101
+ 68 1 100 102
+ 69 1 103 104
+ 70 1 103 105
+ 71 1 106 107
+ 72 1 106 108
+ 73 1 109 110
+ 74 1 109 111
+ 75 1 112 113
+ 76 1 112 114
+ 77 1 115 116
+ 78 1 115 117
+ 79 1 118 119
+ 80 1 118 120
+ 81 1 121 122
+ 82 1 121 123
+ 83 1 124 125
+ 84 1 124 126
+ 85 1 127 128
+ 86 1 127 129
+ 87 1 130 131
+ 88 1 130 132
+ 89 1 133 134
+ 90 1 133 135
+ 91 1 136 137
+ 92 1 136 138
+ 93 1 139 140
+ 94 1 139 141
+ 95 1 142 143
+ 96 1 142 144
+ 97 1 145 146
+ 98 1 145 147
+ 99 1 148 149
+ 100 1 148 150
+ 101 1 151 152
+ 102 1 151 153
+ 103 1 154 155
+ 104 1 154 156
+ 105 1 157 158
+ 106 1 157 159
+ 107 1 160 161
+ 108 1 160 162
+ 109 1 163 164
+ 110 1 163 165
+ 111 1 166 167
+ 112 1 166 168
+ 113 1 169 170
+ 114 1 169 171
+ 115 1 172 173
+ 116 1 172 174
+ 117 1 175 176
+ 118 1 175 177
+ 119 1 178 179
+ 120 1 178 180
+ 121 1 181 182
+ 122 1 181 183
+ 123 1 184 185
+ 124 1 184 186
+ 125 1 187 188
+ 126 1 187 189
+ 127 1 190 191
+ 128 1 190 192
+ 129 1 193 194
+ 130 1 193 195
+ 131 1 196 197
+ 132 1 196 198
+ 133 1 199 200
+ 134 1 199 201
+ 135 1 202 203
+ 136 1 202 204
+ 137 1 205 206
+ 138 1 205 207
+ 139 1 208 209
+ 140 1 208 210
+ 141 1 211 212
+ 142 1 211 213
+ 143 1 214 215
+ 144 1 214 216
+ 145 1 217 218
+ 146 1 217 219
+ 147 1 220 221
+ 148 1 220 222
+ 149 1 223 224
+ 150 1 223 225
+ 151 1 226 227
+ 152 1 226 228
+ 153 1 229 230
+ 154 1 229 231
+ 155 1 232 233
+ 156 1 232 234
+ 157 1 235 236
+ 158 1 235 237
+ 159 1 238 239
+ 160 1 238 240
+ 161 1 241 242
+ 162 1 241 243
+ 163 1 244 245
+ 164 1 244 246
+ 165 1 247 248
+ 166 1 247 249
+ 167 1 250 251
+ 168 1 250 252
+ 169 1 253 254
+ 170 1 253 255
+ 171 1 256 257
+ 172 1 256 258
+ 173 1 259 260
+ 174 1 259 261
+ 175 1 262 263
+ 176 1 262 264
+ 177 1 265 266
+ 178 1 265 267
+ 179 1 268 269
+ 180 1 268 270
+ 181 1 271 272
+ 182 1 271 273
+ 183 1 274 275
+ 184 1 274 276
+ 185 1 277 278
+ 186 1 277 279
+ 187 1 280 281
+ 188 1 280 282
+ 189 1 283 284
+ 190 1 283 285
+ 191 1 286 287
+ 192 1 286 288
+ 193 1 289 290
+ 194 1 289 291
+ 195 1 292 293
+ 196 1 292 294
+ 197 1 295 296
+ 198 1 295 297
+ 199 1 298 299
+ 200 1 298 300
+ 201 1 301 302
+ 202 1 301 303
+ 203 1 304 305
+ 204 1 304 306
+ 205 1 307 308
+ 206 1 307 309
+ 207 1 310 311
+ 208 1 310 312
+ 209 1 313 314
+ 210 1 313 315
+ 211 1 316 317
+ 212 1 316 318
+ 213 1 319 320
+ 214 1 319 321
+ 215 1 322 323
+ 216 1 322 324
+ 217 1 325 326
+ 218 1 325 327
+ 219 1 328 329
+ 220 1 328 330
+ 221 1 331 332
+ 222 1 331 333
+ 223 1 334 335
+ 224 1 334 336
+ 225 1 337 338
+ 226 1 337 339
+ 227 1 340 341
+ 228 1 340 342
+ 229 1 343 344
+ 230 1 343 345
+ 231 1 346 347
+ 232 1 346 348
+ 233 1 349 350
+ 234 1 349 351
+ 235 1 352 353
+ 236 1 352 354
+ 237 1 355 356
+ 238 1 355 357
+ 239 1 358 359
+ 240 1 358 360
+ 241 1 361 362
+ 242 1 361 363
+ 243 1 364 365
+ 244 1 364 366
+ 245 1 367 368
+ 246 1 367 369
+ 247 1 370 371
+ 248 1 370 372
+ 249 1 373 374
+ 250 1 373 375
+ 251 1 376 377
+ 252 1 376 378
+ 253 1 379 380
+ 254 1 379 381
+ 255 1 382 383
+ 256 1 382 384
+ 257 1 385 386
+ 258 1 385 387
+ 259 1 388 389
+ 260 1 388 390
+ 261 1 391 392
+ 262 1 391 393
+ 263 1 394 395
+ 264 1 394 396
+ 265 1 397 398
+ 266 1 397 399
+ 267 1 400 401
+ 268 1 400 402
+ 269 1 403 404
+ 270 1 403 405
+ 271 1 406 407
+ 272 1 406 408
+ 273 1 409 410
+ 274 1 409 411
+ 275 1 412 413
+ 276 1 412 414
+ 277 1 415 416
+ 278 1 415 417
+ 279 1 418 419
+ 280 1 418 420
+ 281 1 421 422
+ 282 1 421 423
+ 283 1 424 425
+ 284 1 424 426
+ 285 1 427 428
+ 286 1 427 429
+ 287 1 430 431
+ 288 1 430 432
+ 289 1 433 434
+ 290 1 433 435
+ 291 1 436 437
+ 292 1 436 438
+ 293 1 439 440
+ 294 1 439 441
+ 295 1 442 443
+ 296 1 442 444
+ 297 1 445 446
+ 298 1 445 447
+ 299 1 448 449
+ 300 1 448 450
+ 301 1 451 452
+ 302 1 451 453
+ 303 1 454 455
+ 304 1 454 456
+ 305 1 457 458
+ 306 1 457 459
+ 307 1 460 461
+ 308 1 460 462
+ 309 1 463 464
+ 310 1 463 465
+ 311 1 466 467
+ 312 1 466 468
+ 313 1 469 470
+ 314 1 469 471
+ 315 1 472 473
+ 316 1 472 474
+ 317 1 475 476
+ 318 1 475 477
+ 319 1 478 479
+ 320 1 478 480
+ 321 1 481 482
+ 322 1 481 483
+ 323 1 484 485
+ 324 1 484 486
+ 325 1 487 488
+ 326 1 487 489
+ 327 1 490 491
+ 328 1 490 492
+ 329 1 493 494
+ 330 1 493 495
+ 331 1 496 497
+ 332 1 496 498
+ 333 1 499 500
+ 334 1 499 501
+ 335 1 502 503
+ 336 1 502 504
+ 337 1 505 506
+ 338 1 505 507
+ 339 1 508 509
+ 340 1 508 510
+ 341 1 511 512
+ 342 1 511 513
+ 343 1 514 515
+ 344 1 514 516
+ 345 1 517 518
+ 346 1 517 519
+ 347 1 520 521
+ 348 1 520 522
+ 349 1 523 524
+ 350 1 523 525
+ 351 1 526 527
+ 352 1 526 528
+ 353 1 529 530
+ 354 1 529 531
+ 355 1 532 533
+ 356 1 532 534
+ 357 1 535 536
+ 358 1 535 537
+ 359 1 538 539
+ 360 1 538 540
+ 361 1 541 542
+ 362 1 541 543
+ 363 1 544 545
+ 364 1 544 546
+ 365 1 547 548
+ 366 1 547 549
+ 367 1 550 551
+ 368 1 550 552
+ 369 1 553 554
+ 370 1 553 555
+ 371 1 556 557
+ 372 1 556 558
+ 373 1 559 560
+ 374 1 559 561
+ 375 1 562 563
+ 376 1 562 564
+ 377 1 565 566
+ 378 1 565 567
+ 379 1 568 569
+ 380 1 568 570
+ 381 1 571 572
+ 382 1 571 573
+ 383 1 574 575
+ 384 1 574 576
+ 385 1 577 578
+ 386 1 577 579
+ 387 1 580 581
+ 388 1 580 582
+ 389 1 583 584
+ 390 1 583 585
+ 391 1 586 587
+ 392 1 586 588
+ 393 1 589 590
+ 394 1 589 591
+ 395 1 592 593
+ 396 1 592 594
+ 397 1 595 596
+ 398 1 595 597
+ 399 1 598 599
+ 400 1 598 600
+ 401 1 601 602
+ 402 1 601 603
+ 403 1 604 605
+ 404 1 604 606
+ 405 1 607 608
+ 406 1 607 609
+ 407 1 610 611
+ 408 1 610 612
+ 409 1 613 614
+ 410 1 613 615
+ 411 1 616 617
+ 412 1 616 618
+ 413 1 619 620
+ 414 1 619 621
+ 415 1 622 623
+ 416 1 622 624
+ 417 1 625 626
+ 418 1 625 627
+ 419 1 628 629
+ 420 1 628 630
+ 421 1 631 632
+ 422 1 631 633
+ 423 1 634 635
+ 424 1 634 636
+ 425 1 637 638
+ 426 1 637 639
+ 427 1 640 641
+ 428 1 640 642
+ 429 1 643 644
+ 430 1 643 645
+ 431 1 646 647
+ 432 1 646 648
+
+Angles
+
+ 1 1 2 1 3
+ 2 1 5 4 6
+ 3 1 8 7 9
+ 4 1 11 10 12
+ 5 1 14 13 15
+ 6 1 17 16 18
+ 7 1 20 19 21
+ 8 1 23 22 24
+ 9 1 26 25 27
+ 10 1 29 28 30
+ 11 1 32 31 33
+ 12 1 35 34 36
+ 13 1 38 37 39
+ 14 1 41 40 42
+ 15 1 44 43 45
+ 16 1 47 46 48
+ 17 1 50 49 51
+ 18 1 53 52 54
+ 19 1 56 55 57
+ 20 1 59 58 60
+ 21 1 62 61 63
+ 22 1 65 64 66
+ 23 1 68 67 69
+ 24 1 71 70 72
+ 25 1 74 73 75
+ 26 1 77 76 78
+ 27 1 80 79 81
+ 28 1 83 82 84
+ 29 1 86 85 87
+ 30 1 89 88 90
+ 31 1 92 91 93
+ 32 1 95 94 96
+ 33 1 98 97 99
+ 34 1 101 100 102
+ 35 1 104 103 105
+ 36 1 107 106 108
+ 37 1 110 109 111
+ 38 1 113 112 114
+ 39 1 116 115 117
+ 40 1 119 118 120
+ 41 1 122 121 123
+ 42 1 125 124 126
+ 43 1 128 127 129
+ 44 1 131 130 132
+ 45 1 134 133 135
+ 46 1 137 136 138
+ 47 1 140 139 141
+ 48 1 143 142 144
+ 49 1 146 145 147
+ 50 1 149 148 150
+ 51 1 152 151 153
+ 52 1 155 154 156
+ 53 1 158 157 159
+ 54 1 161 160 162
+ 55 1 164 163 165
+ 56 1 167 166 168
+ 57 1 170 169 171
+ 58 1 173 172 174
+ 59 1 176 175 177
+ 60 1 179 178 180
+ 61 1 182 181 183
+ 62 1 185 184 186
+ 63 1 188 187 189
+ 64 1 191 190 192
+ 65 1 194 193 195
+ 66 1 197 196 198
+ 67 1 200 199 201
+ 68 1 203 202 204
+ 69 1 206 205 207
+ 70 1 209 208 210
+ 71 1 212 211 213
+ 72 1 215 214 216
+ 73 1 218 217 219
+ 74 1 221 220 222
+ 75 1 224 223 225
+ 76 1 227 226 228
+ 77 1 230 229 231
+ 78 1 233 232 234
+ 79 1 236 235 237
+ 80 1 239 238 240
+ 81 1 242 241 243
+ 82 1 245 244 246
+ 83 1 248 247 249
+ 84 1 251 250 252
+ 85 1 254 253 255
+ 86 1 257 256 258
+ 87 1 260 259 261
+ 88 1 263 262 264
+ 89 1 266 265 267
+ 90 1 269 268 270
+ 91 1 272 271 273
+ 92 1 275 274 276
+ 93 1 278 277 279
+ 94 1 281 280 282
+ 95 1 284 283 285
+ 96 1 287 286 288
+ 97 1 290 289 291
+ 98 1 293 292 294
+ 99 1 296 295 297
+ 100 1 299 298 300
+ 101 1 302 301 303
+ 102 1 305 304 306
+ 103 1 308 307 309
+ 104 1 311 310 312
+ 105 1 314 313 315
+ 106 1 317 316 318
+ 107 1 320 319 321
+ 108 1 323 322 324
+ 109 1 326 325 327
+ 110 1 329 328 330
+ 111 1 332 331 333
+ 112 1 335 334 336
+ 113 1 338 337 339
+ 114 1 341 340 342
+ 115 1 344 343 345
+ 116 1 347 346 348
+ 117 1 350 349 351
+ 118 1 353 352 354
+ 119 1 356 355 357
+ 120 1 359 358 360
+ 121 1 362 361 363
+ 122 1 365 364 366
+ 123 1 368 367 369
+ 124 1 371 370 372
+ 125 1 374 373 375
+ 126 1 377 376 378
+ 127 1 380 379 381
+ 128 1 383 382 384
+ 129 1 386 385 387
+ 130 1 389 388 390
+ 131 1 392 391 393
+ 132 1 395 394 396
+ 133 1 398 397 399
+ 134 1 401 400 402
+ 135 1 404 403 405
+ 136 1 407 406 408
+ 137 1 410 409 411
+ 138 1 413 412 414
+ 139 1 416 415 417
+ 140 1 419 418 420
+ 141 1 422 421 423
+ 142 1 425 424 426
+ 143 1 428 427 429
+ 144 1 431 430 432
+ 145 1 434 433 435
+ 146 1 437 436 438
+ 147 1 440 439 441
+ 148 1 443 442 444
+ 149 1 446 445 447
+ 150 1 449 448 450
+ 151 1 452 451 453
+ 152 1 455 454 456
+ 153 1 458 457 459
+ 154 1 461 460 462
+ 155 1 464 463 465
+ 156 1 467 466 468
+ 157 1 470 469 471
+ 158 1 473 472 474
+ 159 1 476 475 477
+ 160 1 479 478 480
+ 161 1 482 481 483
+ 162 1 485 484 486
+ 163 1 488 487 489
+ 164 1 491 490 492
+ 165 1 494 493 495
+ 166 1 497 496 498
+ 167 1 500 499 501
+ 168 1 503 502 504
+ 169 1 506 505 507
+ 170 1 509 508 510
+ 171 1 512 511 513
+ 172 1 515 514 516
+ 173 1 518 517 519
+ 174 1 521 520 522
+ 175 1 524 523 525
+ 176 1 527 526 528
+ 177 1 530 529 531
+ 178 1 533 532 534
+ 179 1 536 535 537
+ 180 1 539 538 540
+ 181 1 542 541 543
+ 182 1 545 544 546
+ 183 1 548 547 549
+ 184 1 551 550 552
+ 185 1 554 553 555
+ 186 1 557 556 558
+ 187 1 560 559 561
+ 188 1 563 562 564
+ 189 1 566 565 567
+ 190 1 569 568 570
+ 191 1 572 571 573
+ 192 1 575 574 576
+ 193 1 578 577 579
+ 194 1 581 580 582
+ 195 1 584 583 585
+ 196 1 587 586 588
+ 197 1 590 589 591
+ 198 1 593 592 594
+ 199 1 596 595 597
+ 200 1 599 598 600
+ 201 1 602 601 603
+ 202 1 605 604 606
+ 203 1 608 607 609
+ 204 1 611 610 612
+ 205 1 614 613 615
+ 206 1 617 616 618
+ 207 1 620 619 621
+ 208 1 623 622 624
+ 209 1 626 625 627
+ 210 1 629 628 630
+ 211 1 632 631 633
+ 212 1 635 634 636
+ 213 1 638 637 639
+ 214 1 641 640 642
+ 215 1 644 643 645
+ 216 1 647 646 648
diff --git a/tools/i-pi/examples/lammps/h2o-piglet.2/in.water b/tools/i-pi/examples/lammps/h2o-piglet.2/in.water
new file mode 100644
index 0000000000000000000000000000000000000000..e810a02a75315529714a237d3b00e00bf3c662dc
--- /dev/null
+++ b/tools/i-pi/examples/lammps/h2o-piglet.2/in.water
@@ -0,0 +1,32 @@
+units		electron
+atom_style	full
+
+#pair_style	lj/cut/coul/long 17.01
+pair_style      lj/cut/tip4p/long 1 2 1 1 0.278072379 17.007
+#bond_style      harmonic
+bond_style      class2 
+angle_style     harmonic
+#kspace_style	pppm 0.0001
+kspace_style	pppm/tip4p 0.0001
+
+read_data	data.water
+pair_coeff  * * 0 0
+pair_coeff  1  1  0.000295147 5.96946
+
+neighbor	2.0 bin
+
+timestep	0.00025
+
+#velocity all create 298.0 2345187
+
+#thermo_style	multi
+#thermo		1
+
+#fix		1 all nvt temp 298.0 298.0 30.0 tchain 1
+#fix 1 all nve
+fix 1 all ipi piglet_2 32344 unix
+
+#dump		1 all xyz 25 dump.xyz
+
+run		100000000
+
diff --git a/tools/i-pi/examples/lammps/h2o-piglet.2/input.xml b/tools/i-pi/examples/lammps/h2o-piglet.2/input.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1dff8eb519fea629826740faeb7f55cfd25bcc58
--- /dev/null
+++ b/tools/i-pi/examples/lammps/h2o-piglet.2/input.xml
@@ -0,0 +1,37 @@
+<simulation>
+   <initialize nbeads='2'> 
+      <file mode='pdb'> water_298K.pdb </file>
+      <velocities mode="thermal" units='kelvin'> 298 </velocities>
+   </initialize>
+   <output prefix='gle_lammps'>
+      <properties stride='1' filename='out'>  [ step, time{picosecond}, conserved{kelvin}, temperature{kelvin}, kinetic_cv{kelvin}, potential{kelvin}, pressure_cv{megapascal}] </properties>
+      <trajectory filename='pos' stride='20'> positions </trajectory>
+   </output>
+   <total_steps>500000</total_steps>
+   <prng><seed>32344</seed></prng>
+   <forces>
+      <socket mode='unix'>
+         <address>piglet_2</address>
+      </socket>
+   </forces>
+   <ensemble mode='nvt'>
+  <thermostat mode='nm_gle'>
+    <A shape='(2,9,9)'>
+[
+   1.300513766690e-2,     9.078220950722e-6,     8.180522706851e-6,     1.196620464216e-5,     1.108609196233e-4,    -8.941338246404e-4,     7.817382329484e-3,    -1.206049888192e-2,    -5.215913547478e-2,    -9.756343549369e-6,     2.131200614277e-7,     2.972243541454e-6,    -4.459298032276e-6,     2.177011229810e-7,     4.960251269751e-7,    -2.083064995647e-6,    -7.004617074013e-6,     2.299410255689e-5,    -1.851243089560e-6,    -2.972243541454e-6,     1.956991859501e-6,     1.742357040415e-6,    -2.082265548357e-6,    -1.760771137012e-6,    -3.733162998255e-6,    -3.711884630223e-5,    -3.625483838477e-5,     1.492481502899e-5,     4.459298032276e-6,    -1.742357040415e-6,     5.092476869103e-6,     2.033910859306e-6,     5.856365217540e-7,    -3.020170664006e-6,     1.868034354962e-5,    -5.049113665348e-6,     1.059383195368e-4,    -2.177011229810e-7,     2.082265548357e-6,    -2.033910859306e-6,     5.467813757620e-5,    -6.684243951800e-6,    -9.770331146786e-7,    -2.159991642805e-4,     4.667176340213e-4,    -7.611448585233e-4,    -4.960251269751e-7,     1.760771137012e-6,    -5.856365217540e-7,     6.684243951800e-6,     6.616597356640e-4,    -1.637891086976e-6,    -2.056652206438e-4,     2.960975881160e-4,     7.659946833472e-3,     2.083064995647e-6,     3.733162998255e-6,     3.020170664006e-6,     9.770331146786e-7,     1.637891086976e-6,     6.390977118535e-3,    -6.246090363901e-5,     5.054994461623e-4,    -1.078245092236e-2,     7.004617074013e-6,     3.711884630223e-5,    -1.868034354962e-5,     2.159991642805e-4,     2.056652206438e-4,     6.246090363901e-5,     1.730397061203e-1,     1.004651317366e-4,    -5.467410217589e-2,    -2.299410255689e-5,     3.625483838477e-5,     5.049113665348e-6,    -4.667176340213e-4,    -2.960975881160e-4,    -5.054994461623e-4,    -1.004651317366e-4,     1.795223909984e+0,  
+   3.661508781828e-6,     6.586380415542e-3,     0.000000000000e+0,     1.048798625055e-2,     0.000000000000e+0,     5.235465741104e-3,     0.000000000000e+0,     7.227324741917e-5,     0.000000000000e+0,    -6.586380415542e-3,     1.472841224644e-1,     3.389091001693e-2,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -3.389091001693e-2,    1.735946745861e-14,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -1.048798625055e-2,     0.000000000000e+0,     0.000000000000e+0,     1.692225827878e-2,     4.099176875073e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -4.099176875073e-3,    1.735946745861e-14,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -5.235465741104e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     6.199421250931e-2,     1.895288863876e-2,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -1.895288863876e-2,    1.735946745861e-14,     0.000000000000e+0,     0.000000000000e+0,    -7.227324741917e-5,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     6.363529537929e-3,     1.124668303030e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -1.124668303030e-3,    1.735946745861e-14
+]
+    </A>
+    <C shape='(2,9,9)' units='kelvin'>
+[
+     5.960000000000e+2,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     5.960000000000e+2,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     5.960000000000e+2,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     5.960000000000e+2,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     5.960000000000e+2,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     5.960000000000e+2,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     5.960000000000e+2,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     5.960000000000e+2,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     5.960000000000e+2,
+     2.328214199148e+3,    -1.773638197238e+2,    -1.602512467866e+3,     8.425273498280e+2,     8.422758941500e+1,    -1.455757871344e+3,    -5.675121506200e+3,    -7.340797223540e+2,    -1.291218519198e+3,    -1.773638197238e+2,     1.435198117668e+4,     7.017882376280e-9,     1.492286663068e+2,     7.538985690600e+1,    -6.166178913900e+1,    -5.732862975560e+1,    -1.734437584300e+1,     2.139711935710e+0,    -1.602512467866e+3,     7.018704063600e-9,     1.404054791182e+4,    -6.233033935480e+2,    -2.932131143096e+2,     1.025131033748e+2,    -8.882494221820e+2,    -6.447837508760e+1,    -2.608106016078e+2,     8.425273498280e+2,     1.492286663068e+2,    -6.233033935480e+2,     6.169297761040e+2,     2.152166828426e-9,     4.558287232240e+2,    -2.592081224912e+3,    -3.768899601800e+2,    -8.237240093440e+1,     8.422758941500e+1,     7.538985690600e+1,    -2.932131143096e+2,     2.151810134644e-9,     8.324310406920e+2,     5.606216348920e+2,    -1.711918649888e+3,     3.002298898960e+2,    -3.067013601100e+3,    -1.455757871344e+3,    -6.166178913900e+1,     1.025131033748e+2,     4.558287232240e+2,     5.606216348920e+2,     3.927651344860e+4,     3.424336970680e-8,    -3.200807605760e+1,     5.531363469240e+0,    -5.675121506200e+3,    -5.732862975560e+1,    -8.882494221820e+2,    -2.592081224912e+3,    -1.711918649888e+3,     3.423615724260e-8,     3.770884192400e+4,    -9.321443096220e+1,    -3.766729941280e+2,    -7.340797223540e+2,    -1.734437584300e+1,    -6.447837508760e+1,    -3.768899601800e+2,     3.002298898960e+2,    -3.200807605760e+1,    -9.321443096220e+1,     1.456848407112e+5,     2.242472021306e-6,    -1.291218519198e+3,     2.139711935710e+0,    -2.608106016078e+2,    -8.237240093440e+1,    -3.067013601100e+3,     5.531363469240e+0,    -3.766729941280e+2,     2.242476256184e-6,     1.456018646376e+5
+]
+    </C>
+  </thermostat>
+
+
+      <timestep units='femtosecond'> 0.1</timestep>
+      <temperature units='kelvin'>298</temperature>
+   </ensemble>
+</simulation>
diff --git a/tools/i-pi/examples/lammps/h2o-piglet.2/water_298K.pdb b/tools/i-pi/examples/lammps/h2o-piglet.2/water_298K.pdb
new file mode 100644
index 0000000000000000000000000000000000000000..e8509c868e9f7ece5e82b1ee19d58a269f5db829
--- /dev/null
+++ b/tools/i-pi/examples/lammps/h2o-piglet.2/water_298K.pdb
@@ -0,0 +1,650 @@
+CRYST   35.233   35.233   35.233  90.00  90.00  90.00 P 1          1
+ATOM      1    O   1     1       3.846   5.672   1.323  0.00  0.00            0
+ATOM      2    H   1     1       2.979   7.054   0.857  0.00  0.00            0
+ATOM      3    H   1     1       5.525   5.697   0.451  0.00  0.00            0
+ATOM      4    O   1     1      34.557  34.341   3.078  0.00  0.00            0
+ATOM      5    H   1     1      33.722  34.689   4.840  0.00  0.00            0
+ATOM      6    H   1     1      36.029  33.220   3.711  0.00  0.00            0
+ATOM      7    O   1     1       5.591   1.963  13.477  0.00  0.00            0
+ATOM      8    H   1     1       7.265   1.864  13.851  0.00  0.00            0
+ATOM      9    H   1     1       5.009   3.555  13.916  0.00  0.00            0
+ATOM     10    O   1     1       1.060   2.061  21.718  0.00  0.00            0
+ATOM     11    H   1     1       0.757   0.261  21.820  0.00  0.00            0
+ATOM     12    H   1     1       0.213   3.013  23.047  0.00  0.00            0
+ATOM     13    O   1     1       1.200   1.337  29.006  0.00  0.00            0
+ATOM     14    H   1     1       0.818   1.884  30.732  0.00  0.00            0
+ATOM     15    H   1     1       2.883   1.825  29.011  0.00  0.00            0
+ATOM     16    O   1     1       1.331   1.386  34.306  0.00  0.00            0
+ATOM     17    H   1     1       2.392   2.898  34.846  0.00  0.00            0
+ATOM     18    H   1     1       0.814   0.532  35.836  0.00  0.00            0
+ATOM     19    O   1     1      31.451  10.201   0.726  0.00  0.00            0
+ATOM     20    H   1     1      32.282  10.877  -0.750  0.00  0.00            0
+ATOM     21    H   1     1      30.920  11.594   1.677  0.00  0.00            0
+ATOM     22    O   1     1       0.836  10.808   4.298  0.00  0.00            0
+ATOM     23    H   1     1       0.305  10.643   2.793  0.00  0.00            0
+ATOM     24    H   1     1      -0.356  10.334   5.524  0.00  0.00            0
+ATOM     25    O   1     1      34.381   5.979   9.194  0.00  0.00            0
+ATOM     26    H   1     1      33.616   7.673   8.857  0.00  0.00            0
+ATOM     27    H   1     1      35.115   5.260   7.618  0.00  0.00            0
+ATOM     28    O   1     1      33.212   6.480  24.278  0.00  0.00            0
+ATOM     29    H   1     1      31.624   6.908  23.521  0.00  0.00            0
+ATOM     30    H   1     1      32.544   4.990  24.982  0.00  0.00            0
+ATOM     31    O   1     1       1.992   9.002  26.863  0.00  0.00            0
+ATOM     32    H   1     1       1.856  10.175  25.579  0.00  0.00            0
+ATOM     33    H   1     1       0.519   8.099  26.386  0.00  0.00            0
+ATOM     34    O   1     1       2.054   8.660  32.515  0.00  0.00            0
+ATOM     35    H   1     1       2.167   8.727  30.494  0.00  0.00            0
+ATOM     36    H   1     1       2.374  10.513  33.038  0.00  0.00            0
+ATOM     37    O   1     1       3.402  16.639   3.008  0.00  0.00            0
+ATOM     38    H   1     1       4.127  15.872   4.446  0.00  0.00            0
+ATOM     39    H   1     1       2.905  18.339   3.160  0.00  0.00            0
+ATOM     40    O   1     1       4.222  15.444   8.072  0.00  0.00            0
+ATOM     41    H   1     1       5.211  16.756   8.299  0.00  0.00            0
+ATOM     42    H   1     1       2.560  15.492   8.860  0.00  0.00            0
+ATOM     43    O   1     1       2.831   9.246  16.488  0.00  0.00            0
+ATOM     44    H   1     1       2.869   8.023  18.050  0.00  0.00            0
+ATOM     45    H   1     1       3.960   8.467  15.154  0.00  0.00            0
+ATOM     46    O   1     1       5.563   6.003  20.907  0.00  0.00            0
+ATOM     47    H   1     1       4.653   4.638  21.480  0.00  0.00            0
+ATOM     48    H   1     1       6.405   6.208  22.529  0.00  0.00            0
+ATOM     49    O   1     1       2.087  13.370  22.913  0.00  0.00            0
+ATOM     50    H   1     1       2.832  14.804  23.422  0.00  0.00            0
+ATOM     51    H   1     1       1.434  13.509  21.196  0.00  0.00            0
+ATOM     52    O   1     1       3.369  17.886  25.109  0.00  0.00            0
+ATOM     53    H   1     1       3.655  17.200  26.766  0.00  0.00            0
+ATOM     54    H   1     1       4.772  18.977  24.500  0.00  0.00            0
+ATOM     55    O   1     1      34.764  20.803   0.948  0.00  0.00            0
+ATOM     56    H   1     1      35.210  21.267   2.816  0.00  0.00            0
+ATOM     57    H   1     1      35.962  21.726   0.131  0.00  0.00            0
+ATOM     58    O   1     1       2.836  24.178  15.229  0.00  0.00            0
+ATOM     59    H   1     1       2.795  22.346  14.876  0.00  0.00            0
+ATOM     60    H   1     1       2.414  24.115  17.130  0.00  0.00            0
+ATOM     61    O   1     1      33.000  24.481  15.230  0.00  0.00            0
+ATOM     62    H   1     1      34.640  24.804  15.013  0.00  0.00            0
+ATOM     63    H   1     1      32.401  25.764  14.295  0.00  0.00            0
+ATOM     64    O   1     1       0.404  26.779  23.400  0.00  0.00            0
+ATOM     65    H   1     1       1.353  27.248  24.987  0.00  0.00            0
+ATOM     66    H   1     1       1.546  28.050  22.317  0.00  0.00            0
+ATOM     67    O   1     1      34.222  21.380  25.418  0.00  0.00            0
+ATOM     68    H   1     1      35.669  20.151  25.317  0.00  0.00            0
+ATOM     69    H   1     1      32.960  21.180  23.992  0.00  0.00            0
+ATOM     70    O   1     1      33.259  17.438  32.480  0.00  0.00            0
+ATOM     71    H   1     1      33.314  18.782  33.883  0.00  0.00            0
+ATOM     72    H   1     1      32.743  18.181  30.871  0.00  0.00            0
+ATOM     73    O   1     1       4.463  21.979   3.936  0.00  0.00            0
+ATOM     74    H   1     1       5.856  23.084   3.400  0.00  0.00            0
+ATOM     75    H   1     1       3.986  22.180   5.602  0.00  0.00            0
+ATOM     76    O   1     1       6.258  25.851   8.520  0.00  0.00            0
+ATOM     77    H   1     1       5.767  27.693   8.476  0.00  0.00            0
+ATOM     78    H   1     1       7.202  25.506  10.186  0.00  0.00            0
+ATOM     79    O   1     1       0.601  29.737  12.747  0.00  0.00            0
+ATOM     80    H   1     1      -0.685  30.842  12.350  0.00  0.00            0
+ATOM     81    H   1     1       1.336  30.716  14.031  0.00  0.00            0
+ATOM     82    O   1     1       7.563  28.191  24.333  0.00  0.00            0
+ATOM     83    H   1     1       9.201  28.828  24.684  0.00  0.00            0
+ATOM     84    H   1     1       7.381  27.621  22.799  0.00  0.00            0
+ATOM     85    O   1     1       3.653  27.109  27.772  0.00  0.00            0
+ATOM     86    H   1     1       5.126  27.015  26.772  0.00  0.00            0
+ATOM     87    H   1     1       3.031  28.756  27.698  0.00  0.00            0
+ATOM     88    O   1     1       2.596  23.991  32.476  0.00  0.00            0
+ATOM     89    H   1     1       2.879  24.791  30.859  0.00  0.00            0
+ATOM     90    H   1     1       4.003  22.913  32.701  0.00  0.00            0
+ATOM     91    O   1     1       3.083  31.317   3.644  0.00  0.00            0
+ATOM     92    H   1     1       4.133  30.589   2.539  0.00  0.00            0
+ATOM     93    H   1     1       4.218  32.173   5.037  0.00  0.00            0
+ATOM     94    O   1     1       4.661  30.555   9.368  0.00  0.00            0
+ATOM     95    H   1     1       3.184  29.843  10.132  0.00  0.00            0
+ATOM     96    H   1     1       4.358  32.448   9.126  0.00  0.00            0
+ATOM     97    O   1     1       3.465  32.537  15.778  0.00  0.00            0
+ATOM     98    H   1     1       5.072  31.819  15.903  0.00  0.00            0
+ATOM     99    H   1     1       4.055  34.257  15.284  0.00  0.00            0
+ATOM    100    O   1     1       4.215  29.153  20.317  0.00  0.00            0
+ATOM    101    H   1     1       3.658  30.176  18.842  0.00  0.00            0
+ATOM    102    H   1     1       4.959  30.291  21.449  0.00  0.00            0
+ATOM    103    O   1     1       1.126  31.333  28.768  0.00  0.00            0
+ATOM    104    H   1     1       2.395  31.124  29.925  0.00  0.00            0
+ATOM    105    H   1     1       0.768  33.092  28.898  0.00  0.00            0
+ATOM    106    O   1     1       4.881  32.616  32.302  0.00  0.00            0
+ATOM    107    H   1     1       6.588  32.911  31.725  0.00  0.00            0
+ATOM    108    H   1     1       4.486  34.037  33.249  0.00  0.00            0
+ATOM    109    O   1     1       8.962   5.556   0.151  0.00  0.00            0
+ATOM    110    H   1     1       9.652   6.991   0.859  0.00  0.00            0
+ATOM    111    H   1     1       9.173   4.477   1.645  0.00  0.00            0
+ATOM    112    O   1     1       1.833   3.518   5.679  0.00  0.00            0
+ATOM    113    H   1     1       2.889   2.731   6.788  0.00  0.00            0
+ATOM    114    H   1     1       2.789   4.187   4.147  0.00  0.00            0
+ATOM    115    O   1     1      10.510  34.726  13.073  0.00  0.00            0
+ATOM    116    H   1     1      11.920  34.118  11.919  0.00  0.00            0
+ATOM    117    H   1     1      11.295  34.968  14.741  0.00  0.00            0
+ATOM    118    O   1     1       7.212   0.042  22.454  0.00  0.00            0
+ATOM    119    H   1     1       6.924   0.470  24.172  0.00  0.00            0
+ATOM    120    H   1     1       8.319   1.228  21.653  0.00  0.00            0
+ATOM    121    O   1     1       6.365   2.010  27.544  0.00  0.00            0
+ATOM    122    H   1     1       5.954   3.585  26.852  0.00  0.00            0
+ATOM    123    H   1     1       7.758   2.549  28.696  0.00  0.00            0
+ATOM    124    O   1     1      10.833   3.140  30.787  0.00  0.00            0
+ATOM    125    H   1     1      12.697   2.975  30.867  0.00  0.00            0
+ATOM    126    H   1     1      10.389   3.700  32.404  0.00  0.00            0
+ATOM    127    O   1     1       8.684   9.342   3.912  0.00  0.00            0
+ATOM    128    H   1     1       6.985   9.256   4.773  0.00  0.00            0
+ATOM    129    H   1     1       8.684  10.809   3.011  0.00  0.00            0
+ATOM    130    O   1     1       4.873   9.919   7.707  0.00  0.00            0
+ATOM    131    H   1     1       3.698   9.771   6.194  0.00  0.00            0
+ATOM    132    H   1     1       5.047  11.961   7.624  0.00  0.00            0
+ATOM    133    O   1     1      10.031   5.018   9.699  0.00  0.00            0
+ATOM    134    H   1     1       9.675   3.382  10.340  0.00  0.00            0
+ATOM    135    H   1     1       9.132   5.987  10.825  0.00  0.00            0
+ATOM    136    O   1     1      11.246   3.918  21.929  0.00  0.00            0
+ATOM    137    H   1     1      12.614   2.770  22.341  0.00  0.00            0
+ATOM    138    H   1     1      12.073   5.686  21.497  0.00  0.00            0
+ATOM    139    O   1     1       6.825   7.164  25.708  0.00  0.00            0
+ATOM    140    H   1     1       8.036   8.374  25.980  0.00  0.00            0
+ATOM    141    H   1     1       5.206   7.900  25.891  0.00  0.00            0
+ATOM    142    O   1     1      10.171  12.811   0.295  0.00  0.00            0
+ATOM    143    H   1     1      10.033  12.818  -1.609  0.00  0.00            0
+ATOM    144    H   1     1       9.880  14.492   0.480  0.00  0.00            0
+ATOM    145    O   1     1       8.190  17.402   1.253  0.00  0.00            0
+ATOM    146    H   1     1       9.472  18.531   1.253  0.00  0.00            0
+ATOM    147    H   1     1       6.351  17.817   1.568  0.00  0.00            0
+ATOM    148    O   1     1      11.233  16.188   8.299  0.00  0.00            0
+ATOM    149    H   1     1      10.291  17.689   8.166  0.00  0.00            0
+ATOM    150    H   1     1      12.768  17.123   8.733  0.00  0.00            0
+ATOM    151    O   1     1       6.386   8.002  12.846  0.00  0.00            0
+ATOM    152    H   1     1       7.701   8.896  13.655  0.00  0.00            0
+ATOM    153    H   1     1       5.591   8.877  11.519  0.00  0.00            0
+ATOM    154    O   1     1       8.184  10.419  18.848  0.00  0.00            0
+ATOM    155    H   1     1       9.498   9.434  19.905  0.00  0.00            0
+ATOM    156    H   1     1       6.882   9.027  18.948  0.00  0.00            0
+ATOM    157    O   1     1      10.806  14.431  21.328  0.00  0.00            0
+ATOM    158    H   1     1       9.177  13.531  20.670  0.00  0.00            0
+ATOM    159    H   1     1      11.344  15.696  20.448  0.00  0.00            0
+ATOM    160    O   1     1       9.237  13.928  30.341  0.00  0.00            0
+ATOM    161    H   1     1      10.779  14.839  30.522  0.00  0.00            0
+ATOM    162    H   1     1       9.965  13.192  28.899  0.00  0.00            0
+ATOM    163    O   1     1      10.918  21.707   1.864  0.00  0.00            0
+ATOM    164    H   1     1      10.280  23.449   2.279  0.00  0.00            0
+ATOM    165    H   1     1      12.708  21.456   1.749  0.00  0.00            0
+ATOM    166    O   1     1       9.353  16.125  13.927  0.00  0.00            0
+ATOM    167    H   1     1       9.938  17.594  14.618  0.00  0.00            0
+ATOM    168    H   1     1       9.518  16.360  12.244  0.00  0.00            0
+ATOM    169    O   1     1      10.371  11.107  14.268  0.00  0.00            0
+ATOM    170    H   1     1       9.644  10.406  15.859  0.00  0.00            0
+ATOM    171    H   1     1       9.434  12.523  14.117  0.00  0.00            0
+ATOM    172    O   1     1       3.351  22.769  20.196  0.00  0.00            0
+ATOM    173    H   1     1       2.055  23.686  21.503  0.00  0.00            0
+ATOM    174    H   1     1       2.452  21.401  19.413  0.00  0.00            0
+ATOM    175    O   1     1       6.836  21.329  23.199  0.00  0.00            0
+ATOM    176    H   1     1       8.249  20.848  22.320  0.00  0.00            0
+ATOM    177    H   1     1       5.668  21.841  21.886  0.00  0.00            0
+ATOM    178    O   1     1       4.604  15.649  30.043  0.00  0.00            0
+ATOM    179    H   1     1       6.453  15.217  30.207  0.00  0.00            0
+ATOM    180    H   1     1       3.822  14.762  31.562  0.00  0.00            0
+ATOM    181    O   1     1       7.125  19.976   9.421  0.00  0.00            0
+ATOM    182    H   1     1       5.918  20.453  10.730  0.00  0.00            0
+ATOM    183    H   1     1       8.099  21.496   9.491  0.00  0.00            0
+ATOM    184    O   1     1       9.063  25.912  13.186  0.00  0.00            0
+ATOM    185    H   1     1      10.350  26.572  12.367  0.00  0.00            0
+ATOM    186    H   1     1       9.680  24.367  13.697  0.00  0.00            0
+ATOM    187    O   1     1       8.022  22.343  17.042  0.00  0.00            0
+ATOM    188    H   1     1       9.144  23.367  18.074  0.00  0.00            0
+ATOM    189    H   1     1       6.562  23.462  16.852  0.00  0.00            0
+ATOM    190    O   1     1      10.762  26.285  19.963  0.00  0.00            0
+ATOM    191    H   1     1      11.036  27.966  20.538  0.00  0.00            0
+ATOM    192    H   1     1      11.078  25.401  21.456  0.00  0.00            0
+ATOM    193    O   1     1       9.158  22.902  28.391  0.00  0.00            0
+ATOM    194    H   1     1       8.219  23.528  27.085  0.00  0.00            0
+ATOM    195    H   1     1       8.089  21.760  29.509  0.00  0.00            0
+ATOM    196    O   1     1       6.219  20.158  31.921  0.00  0.00            0
+ATOM    197    H   1     1       5.635  18.511  31.161  0.00  0.00            0
+ATOM    198    H   1     1       7.530  19.624  33.071  0.00  0.00            0
+ATOM    199    O   1     1      11.191  31.509   2.617  0.00  0.00            0
+ATOM    200    H   1     1      10.460  32.214   4.108  0.00  0.00            0
+ATOM    201    H   1     1      13.176  31.751   2.577  0.00  0.00            0
+ATOM    202    O   1     1       4.748   0.055   8.605  0.00  0.00            0
+ATOM    203    H   1     1       5.380   0.517  10.183  0.00  0.00            0
+ATOM    204    H   1     1       6.050  -0.306   7.480  0.00  0.00            0
+ATOM    205    O   1     1       8.695  30.809  15.731  0.00  0.00            0
+ATOM    206    H   1     1       9.189  32.103  14.495  0.00  0.00            0
+ATOM    207    H   1     1       8.447  29.069  14.868  0.00  0.00            0
+ATOM    208    O   1     1      10.128  31.402  20.766  0.00  0.00            0
+ATOM    209    H   1     1       9.456  30.905  19.155  0.00  0.00            0
+ATOM    210    H   1     1       9.020  32.731  21.415  0.00  0.00            0
+ATOM    211    O   1     1      12.238  30.162  25.837  0.00  0.00            0
+ATOM    212    H   1     1      11.418  30.908  27.110  0.00  0.00            0
+ATOM    213    H   1     1      12.396  31.331  24.678  0.00  0.00            0
+ATOM    214    O   1     1      10.395  32.537  30.624  0.00  0.00            0
+ATOM    215    H   1     1      11.042  34.339  30.751  0.00  0.00            0
+ATOM    216    H   1     1      11.378  31.486  31.538  0.00  0.00            0
+ATOM    217    O   1     1      10.438   3.626   5.087  0.00  0.00            0
+ATOM    218    H   1     1      12.435   4.082   5.136  0.00  0.00            0
+ATOM    219    H   1     1       9.822   4.284   6.681  0.00  0.00            0
+ATOM    220    O   1     1      14.762   3.401  13.776  0.00  0.00            0
+ATOM    221    H   1     1      16.518   3.824  13.376  0.00  0.00            0
+ATOM    222    H   1     1      13.752   4.757  12.964  0.00  0.00            0
+ATOM    223    O   1     1      12.382   1.012  17.643  0.00  0.00            0
+ATOM    224    H   1     1      13.346   1.997  16.444  0.00  0.00            0
+ATOM    225    H   1     1      11.931   2.133  18.998  0.00  0.00            0
+ATOM    226    O   1     1      15.278   1.293  24.559  0.00  0.00            0
+ATOM    227    H   1     1      16.071   0.946  26.365  0.00  0.00            0
+ATOM    228    H   1     1      15.794   0.199  23.499  0.00  0.00            0
+ATOM    229    O   1     1      22.226  31.627  24.712  0.00  0.00            0
+ATOM    230    H   1     1      23.338  32.595  23.876  0.00  0.00            0
+ATOM    231    H   1     1      22.161  30.053  24.132  0.00  0.00            0
+ATOM    232    O   1     1      15.640   1.847  32.717  0.00  0.00            0
+ATOM    233    H   1     1      17.488   2.473  31.874  0.00  0.00            0
+ATOM    234    H   1     1      16.403   0.869  34.267  0.00  0.00            0
+ATOM    235    O   1     1      14.858  10.199   2.754  0.00  0.00            0
+ATOM    236    H   1     1      13.360  10.712   2.282  0.00  0.00            0
+ATOM    237    H   1     1      14.560   9.316   4.559  0.00  0.00            0
+ATOM    238    O   1     1      15.717   8.469  10.739  0.00  0.00            0
+ATOM    239    H   1     1      17.323   9.581  10.875  0.00  0.00            0
+ATOM    240    H   1     1      14.574   9.631  10.221  0.00  0.00            0
+ATOM    241    O   1     1      15.248  10.398  16.525  0.00  0.00            0
+ATOM    242    H   1     1      16.324   9.181  16.149  0.00  0.00            0
+ATOM    243    H   1     1      14.172  10.488  15.098  0.00  0.00            0
+ATOM    244    O   1     1      13.226   8.438  20.801  0.00  0.00            0
+ATOM    245    H   1     1      14.043   8.996  19.295  0.00  0.00            0
+ATOM    246    H   1     1      14.661   7.802  22.093  0.00  0.00            0
+ATOM    247    O   1     1      10.173  10.961  25.875  0.00  0.00            0
+ATOM    248    H   1     1      11.477  10.223  26.940  0.00  0.00            0
+ATOM    249    H   1     1      11.269  10.738  24.343  0.00  0.00            0
+ATOM    250    O   1     1      12.792   7.737  29.173  0.00  0.00            0
+ATOM    251    H   1     1      12.199   6.038  29.475  0.00  0.00            0
+ATOM    252    H   1     1      14.427   7.450  29.617  0.00  0.00            0
+ATOM    253    O   1     1      15.180  19.498   3.578  0.00  0.00            0
+ATOM    254    H   1     1      14.883  17.596   4.080  0.00  0.00            0
+ATOM    255    H   1     1      16.754  19.579   2.626  0.00  0.00            0
+ATOM    256    O   1     1      12.517  11.093   7.701  0.00  0.00            0
+ATOM    257    H   1     1      12.224  12.778   7.555  0.00  0.00            0
+ATOM    258    H   1     1      11.150  10.393   7.057  0.00  0.00            0
+ATOM    259    O   1     1      16.266  16.271  10.758  0.00  0.00            0
+ATOM    260    H   1     1      16.507  15.795  12.768  0.00  0.00            0
+ATOM    261    H   1     1      17.725  16.977  10.292  0.00  0.00            0
+ATOM    262    O   1     1      14.069  18.399  18.897  0.00  0.00            0
+ATOM    263    H   1     1      15.513  17.523  18.155  0.00  0.00            0
+ATOM    264    H   1     1      14.958  18.709  20.673  0.00  0.00            0
+ATOM    265    O   1     1      14.099  15.480  25.510  0.00  0.00            0
+ATOM    266    H   1     1      13.698  16.872  26.938  0.00  0.00            0
+ATOM    267    H   1     1      12.567  15.379  24.444  0.00  0.00            0
+ATOM    268    O   1     1      13.309  17.574  30.292  0.00  0.00            0
+ATOM    269    H   1     1      14.937  16.934  30.810  0.00  0.00            0
+ATOM    270    H   1     1      13.969  19.494  30.012  0.00  0.00            0
+ATOM    271    O   1     1      18.371  23.257   0.925  0.00  0.00            0
+ATOM    272    H   1     1      19.479  23.480   2.321  0.00  0.00            0
+ATOM    273    H   1     1      19.087  24.325  -0.369  0.00  0.00            0
+ATOM    274    O   1     1      12.100  21.730  11.355  0.00  0.00            0
+ATOM    275    H   1     1      13.141  22.287  12.743  0.00  0.00            0
+ATOM    276    H   1     1      13.467  22.236  10.244  0.00  0.00            0
+ATOM    277    O   1     1      12.163  23.290  23.597  0.00  0.00            0
+ATOM    278    H   1     1      11.324  22.736  24.949  0.00  0.00            0
+ATOM    279    H   1     1      13.882  22.872  23.840  0.00  0.00            0
+ATOM    280    O   1     1      20.173  26.761  22.628  0.00  0.00            0
+ATOM    281    H   1     1      20.206  26.532  20.792  0.00  0.00            0
+ATOM    282    H   1     1      21.556  25.742  23.389  0.00  0.00            0
+ATOM    283    O   1     1      16.701  21.165  22.605  0.00  0.00            0
+ATOM    284    H   1     1      18.028  20.686  23.848  0.00  0.00            0
+ATOM    285    H   1     1      17.104  22.866  21.949  0.00  0.00            0
+ATOM    286    O   1     1      11.391  26.461  33.705  0.00  0.00            0
+ATOM    287    H   1     1       9.841  27.192  34.048  0.00  0.00            0
+ATOM    288    H   1     1      11.776  25.540  35.243  0.00  0.00            0
+ATOM    289    O   1     1       9.898  25.989   4.553  0.00  0.00            0
+ATOM    290    H   1     1       8.902  26.131   6.039  0.00  0.00            0
+ATOM    291    H   1     1      10.287  27.806   4.376  0.00  0.00            0
+ATOM    292    O   1     1      14.308  26.960  10.877  0.00  0.00            0
+ATOM    293    H   1     1      15.302  27.405  12.173  0.00  0.00            0
+ATOM    294    H   1     1      15.463  26.151   9.633  0.00  0.00            0
+ATOM    295    O   1     1      13.433  22.960  16.904  0.00  0.00            0
+ATOM    296    H   1     1      13.409  24.131  18.132  0.00  0.00            0
+ATOM    297    H   1     1      13.624  21.191  17.520  0.00  0.00            0
+ATOM    298    O   1     1      16.409  26.768  26.875  0.00  0.00            0
+ATOM    299    H   1     1      17.590  26.987  25.431  0.00  0.00            0
+ATOM    300    H   1     1      14.751  27.703  26.230  0.00  0.00            0
+ATOM    301    O   1     1      14.405  22.733  29.892  0.00  0.00            0
+ATOM    302    H   1     1      15.423  23.079  28.494  0.00  0.00            0
+ATOM    303    H   1     1      12.826  23.259  29.416  0.00  0.00            0
+ATOM    304    O   1     1       6.905  29.408   0.749  0.00  0.00            0
+ATOM    305    H   1     1       8.428  30.483   1.567  0.00  0.00            0
+ATOM    306    H   1     1       6.353  30.814  -0.444  0.00  0.00            0
+ATOM    307    O   1     1       9.189  34.159   6.509  0.00  0.00            0
+ATOM    308    H   1     1      10.198  34.193   8.002  0.00  0.00            0
+ATOM    309    H   1     1       9.890  35.692   5.785  0.00  0.00            0
+ATOM    310    O   1     1      14.256  32.316   9.369  0.00  0.00            0
+ATOM    311    H   1     1      15.733  32.867   9.486  0.00  0.00            0
+ATOM    312    H   1     1      14.754  30.670  10.090  0.00  0.00            0
+ATOM    313    O   1     1      14.714  30.841  16.516  0.00  0.00            0
+ATOM    314    H   1     1      13.748  29.551  17.279  0.00  0.00            0
+ATOM    315    H   1     1      13.218  31.933  16.614  0.00  0.00            0
+ATOM    316    O   1     1      18.409  33.641  20.611  0.00  0.00            0
+ATOM    317    H   1     1      19.601  32.274  21.115  0.00  0.00            0
+ATOM    318    H   1     1      17.360  32.655  19.518  0.00  0.00            0
+ATOM    319    O   1     1      16.062  28.638  32.207  0.00  0.00            0
+ATOM    320    H   1     1      14.648  27.958  33.253  0.00  0.00            0
+ATOM    321    H   1     1      15.752  28.014  30.522  0.00  0.00            0
+ATOM    322    O   1     1      16.200  30.895   1.473  0.00  0.00            0
+ATOM    323    H   1     1      16.626  29.968  -0.130  0.00  0.00            0
+ATOM    324    H   1     1      17.167  29.833   2.927  0.00  0.00            0
+ATOM    325    O   1     1      20.278   3.529   6.048  0.00  0.00            0
+ATOM    326    H   1     1      20.977   3.611   4.575  0.00  0.00            0
+ATOM    327    H   1     1      21.312   4.513   7.251  0.00  0.00            0
+ATOM    328    O   1     1      23.079   5.778  10.408  0.00  0.00            0
+ATOM    329    H   1     1      24.650   6.259  10.838  0.00  0.00            0
+ATOM    330    H   1     1      22.342   7.609  10.178  0.00  0.00            0
+ATOM    331    O   1     1      19.581   2.031  12.110  0.00  0.00            0
+ATOM    332    H   1     1      19.039   1.082  10.440  0.00  0.00            0
+ATOM    333    H   1     1      21.141   2.991  11.851  0.00  0.00            0
+ATOM    334    O   1     1      22.005   3.223  23.178  0.00  0.00            0
+ATOM    335    H   1     1      21.429   4.090  24.554  0.00  0.00            0
+ATOM    336    H   1     1      20.654   1.791  22.711  0.00  0.00            0
+ATOM    337    O   1     1      16.630   6.422  23.792  0.00  0.00            0
+ATOM    338    H   1     1      16.219   4.804  24.406  0.00  0.00            0
+ATOM    339    H   1     1      17.066   7.128  25.282  0.00  0.00            0
+ATOM    340    O   1     1      21.676   5.564  28.158  0.00  0.00            0
+ATOM    341    H   1     1      20.658   6.717  29.185  0.00  0.00            0
+ATOM    342    H   1     1      23.413   5.828  28.996  0.00  0.00            0
+ATOM    343    O   1     1      15.257   5.265   5.626  0.00  0.00            0
+ATOM    344    H   1     1      16.914   4.519   5.490  0.00  0.00            0
+ATOM    345    H   1     1      15.144   6.150   6.972  0.00  0.00            0
+ATOM    346    O   1     1      20.137  11.082  10.437  0.00  0.00            0
+ATOM    347    H   1     1      20.021  10.947   8.733  0.00  0.00            0
+ATOM    348    H   1     1      21.025  12.555  10.853  0.00  0.00            0
+ATOM    349    O   1     1      23.089  14.627  12.437  0.00  0.00            0
+ATOM    350    H   1     1      24.716  15.254  12.736  0.00  0.00            0
+ATOM    351    H   1     1      23.284  13.228  13.653  0.00  0.00            0
+ATOM    352    O   1     1      24.083  12.649  22.566  0.00  0.00            0
+ATOM    353    H   1     1      22.397  12.663  23.042  0.00  0.00            0
+ATOM    354    H   1     1      24.901  13.851  23.565  0.00  0.00            0
+ATOM    355    O   1     1      17.865   7.909  30.036  0.00  0.00            0
+ATOM    356    H   1     1      17.509   8.045  31.982  0.00  0.00            0
+ATOM    357    H   1     1      18.078   9.582  29.318  0.00  0.00            0
+ATOM    358    O   1     1      18.824   8.486   0.104  0.00  0.00            0
+ATOM    359    H   1     1      19.997  10.191  -0.057  0.00  0.00            0
+ATOM    360    H   1     1      17.077   8.998   0.779  0.00  0.00            0
+ATOM    361    O   1     1      20.122   9.143   5.343  0.00  0.00            0
+ATOM    362    H   1     1      19.373   8.819   3.821  0.00  0.00            0
+ATOM    363    H   1     1      21.998   8.776   5.128  0.00  0.00            0
+ATOM    364    O   1     1      16.413  14.459   5.855  0.00  0.00            0
+ATOM    365    H   1     1      15.536  13.007   5.239  0.00  0.00            0
+ATOM    366    H   1     1      16.006  14.725   7.737  0.00  0.00            0
+ATOM    367    O   1     1      17.561  15.066  15.654  0.00  0.00            0
+ATOM    368    H   1     1      17.575  13.398  16.055  0.00  0.00            0
+ATOM    369    H   1     1      18.978  15.828  16.400  0.00  0.00            0
+ATOM    370    O   1     1      26.374  17.047  24.817  0.00  0.00            0
+ATOM    371    H   1     1      27.983  17.098  25.632  0.00  0.00            0
+ATOM    372    H   1     1      25.629  18.751  24.919  0.00  0.00            0
+ATOM    373    O   1     1      19.784  12.960  28.706  0.00  0.00            0
+ATOM    374    H   1     1      21.662  13.055  28.871  0.00  0.00            0
+ATOM    375    H   1     1      19.545  14.070  27.143  0.00  0.00            0
+ATOM    376    O   1     1      17.891  16.733  32.499  0.00  0.00            0
+ATOM    377    H   1     1      18.327  15.240  31.277  0.00  0.00            0
+ATOM    378    H   1     1      18.633  18.335  31.693  0.00  0.00            0
+ATOM    379    O   1     1      23.733  23.024   1.663  0.00  0.00            0
+ATOM    380    H   1     1      24.800  24.052   2.776  0.00  0.00            0
+ATOM    381    H   1     1      24.693  22.618   0.198  0.00  0.00            0
+ATOM    382    O   1     1      20.789  18.440   9.443  0.00  0.00            0
+ATOM    383    H   1     1      20.766  17.257   7.881  0.00  0.00            0
+ATOM    384    H   1     1      21.896  17.345  10.385  0.00  0.00            0
+ATOM    385    O   1     1      21.574  17.493  17.838  0.00  0.00            0
+ATOM    386    H   1     1      20.597  18.955  17.218  0.00  0.00            0
+ATOM    387    H   1     1      22.538  16.874  16.251  0.00  0.00            0
+ATOM    388    O   1     1      19.168  14.748  24.131  0.00  0.00            0
+ATOM    389    H   1     1      19.711  16.390  23.712  0.00  0.00            0
+ATOM    390    H   1     1      17.429  14.695  24.403  0.00  0.00            0
+ATOM    391    O   1     1      22.149  20.198  24.977  0.00  0.00            0
+ATOM    392    H   1     1      21.639  20.924  26.486  0.00  0.00            0
+ATOM    393    H   1     1      22.656  21.657  24.411  0.00  0.00            0
+ATOM    394    O   1     1      20.565  20.792  29.600  0.00  0.00            0
+ATOM    395    H   1     1      22.264  20.409  30.214  0.00  0.00            0
+ATOM    396    H   1     1      20.548  22.408  30.597  0.00  0.00            0
+ATOM    397    O   1     1      20.802  26.547   9.615  0.00  0.00            0
+ATOM    398    H   1     1      20.099  27.984   8.338  0.00  0.00            0
+ATOM    399    H   1     1      21.277  27.539  11.325  0.00  0.00            0
+ATOM    400    O   1     1      16.283  23.589   7.779  0.00  0.00            0
+ATOM    401    H   1     1      16.093  21.973   6.712  0.00  0.00            0
+ATOM    402    H   1     1      17.901  22.971   8.154  0.00  0.00            0
+ATOM    403    O   1     1      18.469  29.798  13.568  0.00  0.00            0
+ATOM    404    H   1     1      19.712  31.216  13.506  0.00  0.00            0
+ATOM    405    H   1     1      16.872  30.343  14.396  0.00  0.00            0
+ATOM    406    O   1     1      18.790  21.712  16.060  0.00  0.00            0
+ATOM    407    H   1     1      19.878  23.090  16.485  0.00  0.00            0
+ATOM    408    H   1     1      17.201  22.326  15.819  0.00  0.00            0
+ATOM    409    O   1     1      21.747  26.084  16.349  0.00  0.00            0
+ATOM    410    H   1     1      20.783  27.021  15.300  0.00  0.00            0
+ATOM    411    H   1     1      22.705  27.328  17.206  0.00  0.00            0
+ATOM    412    O   1     1      20.769  26.211  32.050  0.00  0.00            0
+ATOM    413    H   1     1      21.488  27.404  33.328  0.00  0.00            0
+ATOM    414    H   1     1      18.989  26.710  32.145  0.00  0.00            0
+ATOM    415    O   1     1      19.820  29.181   5.559  0.00  0.00            0
+ATOM    416    H   1     1      20.991  29.509   4.109  0.00  0.00            0
+ATOM    417    H   1     1      19.431  31.018   6.221  0.00  0.00            0
+ATOM    418    O   1     1      19.240  33.867   7.993  0.00  0.00            0
+ATOM    419    H   1     1      19.107  35.039   6.604  0.00  0.00            0
+ATOM    420    H   1     1      20.697  33.671   9.063  0.00  0.00            0
+ATOM    421    O   1     1      22.511  34.976  15.793  0.00  0.00            0
+ATOM    422    H   1     1      23.716  36.163  16.603  0.00  0.00            0
+ATOM    423    H   1     1      21.699  36.150  14.467  0.00  0.00            0
+ATOM    424    O   1     1      22.622  30.284  19.069  0.00  0.00            0
+ATOM    425    H   1     1      22.049  31.351  17.725  0.00  0.00            0
+ATOM    426    H   1     1      24.411  30.773  19.576  0.00  0.00            0
+ATOM    427    O   1     1      18.639  33.611  28.369  0.00  0.00            0
+ATOM    428    H   1     1      18.226  32.159  29.103  0.00  0.00            0
+ATOM    429    H   1     1      19.906  33.008  27.158  0.00  0.00            0
+ATOM    430    O   1     1      22.520   1.325  31.926  0.00  0.00            0
+ATOM    431    H   1     1      22.803   2.668  30.796  0.00  0.00            0
+ATOM    432    H   1     1      21.045   0.425  31.122  0.00  0.00            0
+ATOM    433    O   1     1      21.754   3.789   1.159  0.00  0.00            0
+ATOM    434    H   1     1      22.085   2.785  -0.180  0.00  0.00            0
+ATOM    435    H   1     1      20.850   5.175   0.610  0.00  0.00            0
+ATOM    436    O   1     1      28.457   5.539  12.133  0.00  0.00            0
+ATOM    437    H   1     1      29.489   4.390  11.182  0.00  0.00            0
+ATOM    438    H   1     1      29.161   7.131  12.587  0.00  0.00            0
+ATOM    439    O   1     1      22.495   5.966  17.324  0.00  0.00            0
+ATOM    440    H   1     1      24.377   5.379  17.393  0.00  0.00            0
+ATOM    441    H   1     1      21.906   5.491  18.857  0.00  0.00            0
+ATOM    442    O   1     1      28.128   3.304  22.287  0.00  0.00            0
+ATOM    443    H   1     1      28.123   2.999  20.491  0.00  0.00            0
+ATOM    444    H   1     1      26.533   3.355  22.876  0.00  0.00            0
+ATOM    445    O   1     1      28.378  10.455  27.266  0.00  0.00            0
+ATOM    446    H   1     1      30.019  10.292  28.051  0.00  0.00            0
+ATOM    447    H   1     1      28.635  10.039  25.463  0.00  0.00            0
+ATOM    448    O   1     1      27.031   8.353  34.806  0.00  0.00            0
+ATOM    449    H   1     1      26.116   9.984  34.571  0.00  0.00            0
+ATOM    450    H   1     1      28.685   8.951  34.739  0.00  0.00            0
+ATOM    451    O   1     1      24.951   8.160   4.454  0.00  0.00            0
+ATOM    452    H   1     1      25.930   9.616   5.160  0.00  0.00            0
+ATOM    453    H   1     1      25.947   7.994   2.724  0.00  0.00            0
+ATOM    454    O   1     1      26.937  12.436   6.869  0.00  0.00            0
+ATOM    455    H   1     1      25.492  13.284   6.708  0.00  0.00            0
+ATOM    456    H   1     1      27.689  13.332   8.266  0.00  0.00            0
+ATOM    457    O   1     1      23.365  11.214  16.933  0.00  0.00            0
+ATOM    458    H   1     1      22.247   9.744  16.789  0.00  0.00            0
+ATOM    459    H   1     1      23.264  12.035  18.539  0.00  0.00            0
+ATOM    460    O   1     1      28.321   8.759  22.158  0.00  0.00            0
+ATOM    461    H   1     1      27.662   6.895  22.482  0.00  0.00            0
+ATOM    462    H   1     1      26.971   9.710  21.902  0.00  0.00            0
+ATOM    463    O   1     1      27.071   6.109  29.555  0.00  0.00            0
+ATOM    464    H   1     1      27.591   7.663  28.857  0.00  0.00            0
+ATOM    465    H   1     1      27.304   6.320  31.261  0.00  0.00            0
+ATOM    466    O   1     1      22.474  11.704  34.640  0.00  0.00            0
+ATOM    467    H   1     1      22.752  13.304  35.584  0.00  0.00            0
+ATOM    468    H   1     1      22.840  12.090  33.030  0.00  0.00            0
+ATOM    469    O   1     1      21.656  14.971   5.615  0.00  0.00            0
+ATOM    470    H   1     1      21.690  15.860   3.977  0.00  0.00            0
+ATOM    471    H   1     1      19.964  14.225   5.774  0.00  0.00            0
+ATOM    472    O   1     1      28.539  21.492   9.820  0.00  0.00            0
+ATOM    473    H   1     1      27.288  22.181   8.688  0.00  0.00            0
+ATOM    474    H   1     1      28.065  22.420  11.602  0.00  0.00            0
+ATOM    475    O   1     1      28.364  16.020  11.109  0.00  0.00            0
+ATOM    476    H   1     1      30.033  16.649  12.089  0.00  0.00            0
+ATOM    477    H   1     1      28.456  17.440  10.082  0.00  0.00            0
+ATOM    478    O   1     1       0.054  13.686  18.103  0.00  0.00            0
+ATOM    479    H   1     1      -1.714  12.928  18.841  0.00  0.00            0
+ATOM    480    H   1     1       1.008  12.429  17.383  0.00  0.00            0
+ATOM    481    O   1     1      24.636  12.894  29.957  0.00  0.00            0
+ATOM    482    H   1     1      25.906  13.914  31.183  0.00  0.00            0
+ATOM    483    H   1     1      25.641  11.609  29.162  0.00  0.00            0
+ATOM    484    O   1     1      21.548  17.250   0.749  0.00  0.00            0
+ATOM    485    H   1     1      21.843  19.026   0.905  0.00  0.00            0
+ATOM    486    H   1     1      20.385  16.716  -0.697  0.00  0.00            0
+ATOM    487    O   1     1      26.095  27.274   4.520  0.00  0.00            0
+ATOM    488    H   1     1      27.889  26.458   4.505  0.00  0.00            0
+ATOM    489    H   1     1      25.648  26.970   6.165  0.00  0.00            0
+ATOM    490    O   1     1      23.610  22.515   8.008  0.00  0.00            0
+ATOM    491    H   1     1      22.653  21.187   8.739  0.00  0.00            0
+ATOM    492    H   1     1      22.286  24.095   8.444  0.00  0.00            0
+ATOM    493    O   1     1      27.355  18.929  18.180  0.00  0.00            0
+ATOM    494    H   1     1      27.200  20.349  17.155  0.00  0.00            0
+ATOM    495    H   1     1      25.579  18.322  18.770  0.00  0.00            0
+ATOM    496    O   1     1      26.765  23.633  14.444  0.00  0.00            0
+ATOM    497    H   1     1      27.441  25.298  13.651  0.00  0.00            0
+ATOM    498    H   1     1      25.086  24.256  14.749  0.00  0.00            0
+ATOM    499    O   1     1      31.478  20.769  20.986  0.00  0.00            0
+ATOM    500    H   1     1      30.440  22.509  21.135  0.00  0.00            0
+ATOM    501    H   1     1      30.567  19.656  20.043  0.00  0.00            0
+ATOM    502    O   1     1      24.812  20.412  32.668  0.00  0.00            0
+ATOM    503    H   1     1      26.242  21.478  31.874  0.00  0.00            0
+ATOM    504    H   1     1      25.787  19.023  33.158  0.00  0.00            0
+ATOM    505    O   1     1      22.105  29.076   0.928  0.00  0.00            0
+ATOM    506    H   1     1      23.296  27.923   1.739  0.00  0.00            0
+ATOM    507    H   1     1      22.623  30.994   0.882  0.00  0.00            0
+ATOM    508    O   1     1      29.572  31.256   8.626  0.00  0.00            0
+ATOM    509    H   1     1      30.795  30.203   7.736  0.00  0.00            0
+ATOM    510    H   1     1      28.277  31.519   7.260  0.00  0.00            0
+ATOM    511    O   1     1      31.817  34.843  18.283  0.00  0.00            0
+ATOM    512    H   1     1      32.438  34.389  16.474  0.00  0.00            0
+ATOM    513    H   1     1      32.743  36.422  18.341  0.00  0.00            0
+ATOM    514    O   1     1      27.915  25.601  19.033  0.00  0.00            0
+ATOM    515    H   1     1      29.358  26.561  19.190  0.00  0.00            0
+ATOM    516    H   1     1      28.148  24.429  17.530  0.00  0.00            0
+ATOM    517    O   1     1      24.548  24.654  24.025  0.00  0.00            0
+ATOM    518    H   1     1      25.528  25.635  22.824  0.00  0.00            0
+ATOM    519    H   1     1      25.300  25.200  25.645  0.00  0.00            0
+ATOM    520    O   1     1      28.540  22.922  30.370  0.00  0.00            0
+ATOM    521    H   1     1      27.414  24.096  29.781  0.00  0.00            0
+ATOM    522    H   1     1      29.674  23.914  31.873  0.00  0.00            0
+ATOM    523    O   1     1      24.969  33.623   1.014  0.00  0.00            0
+ATOM    524    H   1     1      26.521  33.058   1.518  0.00  0.00            0
+ATOM    525    H   1     1      24.990  34.322  -0.683  0.00  0.00            0
+ATOM    526    O   1     1      23.075  32.171  11.324  0.00  0.00            0
+ATOM    527    H   1     1      23.316  32.775  13.097  0.00  0.00            0
+ATOM    528    H   1     1      24.460  33.203  10.662  0.00  0.00            0
+ATOM    529    O   1     1      27.497   2.736  17.224  0.00  0.00            0
+ATOM    530    H   1     1      28.397   3.415  15.715  0.00  0.00            0
+ATOM    531    H   1     1      28.234   1.233  17.412  0.00  0.00            0
+ATOM    532    O   1     1      26.369  33.060  22.077  0.00  0.00            0
+ATOM    533    H   1     1      26.170  34.746  22.264  0.00  0.00            0
+ATOM    534    H   1     1      27.592  32.404  23.321  0.00  0.00            0
+ATOM    535    O   1     1      30.221  30.950  25.843  0.00  0.00            0
+ATOM    536    H   1     1      30.305  29.038  26.208  0.00  0.00            0
+ATOM    537    H   1     1      30.363  31.979  27.414  0.00  0.00            0
+ATOM    538    O   1     1      24.973  26.732  28.607  0.00  0.00            0
+ATOM    539    H   1     1      25.385  28.369  29.248  0.00  0.00            0
+ATOM    540    H   1     1      23.330  26.597  29.234  0.00  0.00            0
+ATOM    541    O   1     1      32.165   4.857   2.258  0.00  0.00            0
+ATOM    542    H   1     1      32.417   6.195   1.157  0.00  0.00            0
+ATOM    543    H   1     1      32.615   3.727   1.112  0.00  0.00            0
+ATOM    544    O   1     1      28.067   3.533   5.217  0.00  0.00            0
+ATOM    545    H   1     1      26.960   4.447   4.158  0.00  0.00            0
+ATOM    546    H   1     1      29.875   3.863   4.448  0.00  0.00            0
+ATOM    547    O   1     1      33.279   2.782  13.028  0.00  0.00            0
+ATOM    548    H   1     1      33.708   3.955  11.817  0.00  0.00            0
+ATOM    549    H   1     1      33.656   3.545  14.631  0.00  0.00            0
+ATOM    550    O   1     1      34.278   4.944  17.492  0.00  0.00            0
+ATOM    551    H   1     1      33.438   6.563  17.876  0.00  0.00            0
+ATOM    552    H   1     1      34.906   4.452  18.995  0.00  0.00            0
+ATOM    553    O   1     1      32.363   1.908  26.092  0.00  0.00            0
+ATOM    554    H   1     1      31.941   1.683  24.268  0.00  0.00            0
+ATOM    555    H   1     1      33.850   1.390  26.904  0.00  0.00            0
+ATOM    556    O   1     1      27.982   0.418  28.241  0.00  0.00            0
+ATOM    557    H   1     1      27.516   2.080  28.309  0.00  0.00            0
+ATOM    558    H   1     1      29.593   0.176  27.299  0.00  0.00            0
+ATOM    559    O   1     1      28.845  14.672   2.724  0.00  0.00            0
+ATOM    560    H   1     1      27.963  13.930   4.139  0.00  0.00            0
+ATOM    561    H   1     1      30.386  15.714   3.379  0.00  0.00            0
+ATOM    562    O   1     1      28.083  10.618  14.298  0.00  0.00            0
+ATOM    563    H   1     1      28.623  12.160  13.293  0.00  0.00            0
+ATOM    564    H   1     1      26.486  11.015  15.379  0.00  0.00            0
+ATOM    565    O   1     1      33.867  10.545  13.306  0.00  0.00            0
+ATOM    566    H   1     1      35.165   9.612  13.810  0.00  0.00            0
+ATOM    567    H   1     1      33.615  10.270  11.513  0.00  0.00            0
+ATOM    568    O   1     1      31.790   9.696  18.223  0.00  0.00            0
+ATOM    569    H   1     1      30.484   9.334  19.421  0.00  0.00            0
+ATOM    570    H   1     1      30.834  10.096  16.929  0.00  0.00            0
+ATOM    571    O   1     1      30.141  15.006  21.532  0.00  0.00            0
+ATOM    572    H   1     1      28.565  15.594  22.099  0.00  0.00            0
+ATOM    573    H   1     1      30.942  14.253  23.077  0.00  0.00            0
+ATOM    574    O   1     1      32.798  10.732  30.680  0.00  0.00            0
+ATOM    575    H   1     1      34.073   9.528  30.799  0.00  0.00            0
+ATOM    576    H   1     1      32.991  11.512  28.983  0.00  0.00            0
+ATOM    577    O   1     1      33.652  16.265   5.086  0.00  0.00            0
+ATOM    578    H   1     1      35.399  16.239   4.730  0.00  0.00            0
+ATOM    579    H   1     1      33.503  17.939   5.631  0.00  0.00            0
+ATOM    580    O   1     1      31.947  10.799   7.943  0.00  0.00            0
+ATOM    581    H   1     1      29.894  10.549   7.619  0.00  0.00            0
+ATOM    582    H   1     1      32.271  12.414   7.075  0.00  0.00            0
+ATOM    583    O   1     1       0.329  15.516  11.746  0.00  0.00            0
+ATOM    584    H   1     1      -0.446  14.249  12.939  0.00  0.00            0
+ATOM    585    H   1     1      -0.685  17.018  11.935  0.00  0.00            0
+ATOM    586    O   1     1       4.262  19.165  14.308  0.00  0.00            0
+ATOM    587    H   1     1       3.579  17.691  14.920  0.00  0.00            0
+ATOM    588    H   1     1       5.723  19.183  15.204  0.00  0.00            0
+ATOM    589    O   1     1      32.995  13.546  25.948  0.00  0.00            0
+ATOM    590    H   1     1      32.167  15.060  26.787  0.00  0.00            0
+ATOM    591    H   1     1      34.425  13.800  25.007  0.00  0.00            0
+ATOM    592    O   1     1       1.773  13.524  34.037  0.00  0.00            0
+ATOM    593    H   1     1       0.227  14.409  33.446  0.00  0.00            0
+ATOM    594    H   1     1       2.167  14.670  35.511  0.00  0.00            0
+ATOM    595    O   1     1      33.029  20.529   7.247  0.00  0.00            0
+ATOM    596    H   1     1      34.388  21.414   8.003  0.00  0.00            0
+ATOM    597    H   1     1      31.451  20.831   8.182  0.00  0.00            0
+ATOM    598    O   1     1       2.037  24.250  10.251  0.00  0.00            0
+ATOM    599    H   1     1       3.743  25.008   9.876  0.00  0.00            0
+ATOM    600    H   1     1       1.894  25.043  11.903  0.00  0.00            0
+ATOM    601    O   1     1      32.753  19.259  13.976  0.00  0.00            0
+ATOM    602    H   1     1      32.792  20.886  13.792  0.00  0.00            0
+ATOM    603    H   1     1      34.334  18.799  14.976  0.00  0.00            0
+ATOM    604    O   1     1       0.396  18.673  18.699  0.00  0.00            0
+ATOM    605    H   1     1      -1.211  18.950  19.127  0.00  0.00            0
+ATOM    606    H   1     1       0.469  16.977  18.436  0.00  0.00            0
+ATOM    607    O   1     1      30.855  18.370  27.959  0.00  0.00            0
+ATOM    608    H   1     1      29.759  19.681  28.690  0.00  0.00            0
+ATOM    609    H   1     1      32.103  19.477  26.763  0.00  0.00            0
+ATOM    610    O   1     1      27.723  15.992  33.091  0.00  0.00            0
+ATOM    611    H   1     1      29.390  16.423  32.192  0.00  0.00            0
+ATOM    612    H   1     1      27.801  15.859  34.804  0.00  0.00            0
+ATOM    613    O   1     1      31.068  27.895   3.348  0.00  0.00            0
+ATOM    614    H   1     1      32.517  27.825   4.610  0.00  0.00            0
+ATOM    615    H   1     1      31.529  29.459   2.324  0.00  0.00            0
+ATOM    616    O   1     1      35.039  28.008   6.663  0.00  0.00            0
+ATOM    617    H   1     1      35.966  26.934   7.683  0.00  0.00            0
+ATOM    618    H   1     1      36.055  28.336   5.336  0.00  0.00            0
+ATOM    619    O   1     1      29.356  28.196  13.025  0.00  0.00            0
+ATOM    620    H   1     1      29.210  29.335  14.589  0.00  0.00            0
+ATOM    621    H   1     1      28.874  29.629  11.867  0.00  0.00            0
+ATOM    622    O   1     1      32.386  28.434  18.961  0.00  0.00            0
+ATOM    623    H   1     1      33.368  28.574  20.411  0.00  0.00            0
+ATOM    624    H   1     1      33.410  27.406  17.949  0.00  0.00            0
+ATOM    625    O   1     1      30.898  25.390  25.799  0.00  0.00            0
+ATOM    626    H   1     1      32.369  25.913  24.580  0.00  0.00            0
+ATOM    627    H   1     1      31.317  24.075  27.029  0.00  0.00            0
+ATOM    628    O   1     1      32.259  25.611  33.104  0.00  0.00            0
+ATOM    629    H   1     1      32.238  25.736  34.806  0.00  0.00            0
+ATOM    630    H   1     1      33.920  25.042  32.775  0.00  0.00            0
+ATOM    631    O   1     1      30.290  32.645   1.341  0.00  0.00            0
+ATOM    632    H   1     1      29.949  32.793  -0.430  0.00  0.00            0
+ATOM    633    H   1     1      31.762  33.340   1.847  0.00  0.00            0
+ATOM    634    O   1     1      25.536  34.235   6.469  0.00  0.00            0
+ATOM    635    H   1     1      25.716  36.059   6.651  0.00  0.00            0
+ATOM    636    H   1     1      25.283  33.866   4.895  0.00  0.00            0
+ATOM    637    O   1     1      31.674  33.161  13.106  0.00  0.00            0
+ATOM    638    H   1     1      31.793  34.863  13.281  0.00  0.00            0
+ATOM    639    H   1     1      30.425  32.928  11.783  0.00  0.00            0
+ATOM    640    O   1     1      33.844  32.668  22.296  0.00  0.00            0
+ATOM    641    H   1     1      32.750  32.234  23.524  0.00  0.00            0
+ATOM    642    H   1     1      32.917  32.875  20.736  0.00  0.00            0
+ATOM    643    O   1     1      31.603  30.542  30.805  0.00  0.00            0
+ATOM    644    H   1     1      33.451  30.804  30.468  0.00  0.00            0
+ATOM    645    H   1     1      31.575  28.816  31.756  0.00  0.00            0
+ATOM    646    O   1     1      26.295  31.235  30.599  0.00  0.00            0
+ATOM    647    H   1     1      27.834  30.515  30.607  0.00  0.00            0
+ATOM    648    H   1     1      26.362  32.920  29.856  0.00  0.00            0
+END
diff --git a/tools/i-pi/examples/lammps/h2o-piglet.4/data.water b/tools/i-pi/examples/lammps/h2o-piglet.4/data.water
new file mode 100644
index 0000000000000000000000000000000000000000..13c75e993391340233222a511f10b475c6240737
--- /dev/null
+++ b/tools/i-pi/examples/lammps/h2o-piglet.4/data.water
@@ -0,0 +1,1331 @@
+LAMMPS Description
+ 
+         648  atoms
+         432  bonds
+         216  angles
+ 
+           2  atom types
+           1  bond types
+           1  angle types
+ 
+         0 35.233 xlo xhi
+         0 35.233 ylo yhi
+         0 35.233 zlo zhi
+ 
+Masses
+ 
+  1 15.9994
+  2  1.0080
+ 
+Bond Coeffs
+ 
+  1    1.78    0.2708585 -0.327738785 0.231328959
+ 
+Angle Coeffs
+ 
+  1    0.0700  107.400000
+
+Atoms
+ 
+ 1 1 1 -1.1128       3.84600000       5.67200001       1.32300000
+ 2 1 2 0.5564        2.97900000       7.05400000       0.85700000
+ 3 1 2 0.5564        5.52500001       5.69700001       0.45100000
+ 4 2 1 -1.1128      34.55700001      34.34100000       3.07800000
+ 5 2 2 0.5564       33.72200001      34.68900000       4.84000001
+ 6 2 2 0.5564       36.02900000      33.22000001       3.71100001
+ 7 3 1 -1.1128       5.59100000       1.96299999      13.47700000
+ 8 3 2 0.5564        7.26500000       1.86400000      13.85100001
+ 9 3 2 0.5564        5.00899999       3.55500000      13.91599999
+ 10 4 1 -1.1128       1.06000000       2.06100000      21.71800001
+ 11 4 2 0.5564        0.75700000       0.26100000      21.82000000
+ 12 4 2 0.5564        0.21300001       3.01299999      23.04700000
+ 13 5 1 -1.1128       1.20000000       1.33700000      29.00599999
+ 14 5 2 0.5564        0.81800000       1.88399999      30.73200000
+ 15 5 2 0.5564        2.88300001       1.82500000      29.01100000
+ 16 6 1 -1.1128       1.33100001       1.38599999      34.30600001
+ 17 6 2 0.5564        2.39200001       2.89799999      34.84600000
+ 18 6 2 0.5564        0.81400000       0.53200001      35.83600000
+ 19 7 1 -1.1128      31.45100000      10.20100000       0.72599999
+ 20 7 2 0.5564       32.28199999      10.87699999      -0.75000000
+ 21 7 2 0.5564       30.91999999      11.59399999       1.67700000
+ 22 8 1 -1.1128       0.83600000      10.80800001       4.29800000
+ 23 8 2 0.5564        0.30500000      10.64300001       2.79300000
+ 24 8 2 0.5564       -0.35600001      10.33400000       5.52400000
+ 25 9 1 -1.1128      34.38100001       5.97900000       9.19400000
+ 26 9 2 0.5564       33.61600000       7.67300000       8.85700000
+ 27 9 2 0.5564       35.11500000       5.25999999       7.61800001
+ 28 10 1 -1.1128      33.21200000       6.48000000      24.27799999
+ 29 10 2 0.5564       31.62400000       6.90800001      23.52100001
+ 30 10 2 0.5564       32.54400000       4.99000000      24.98200000
+ 31 11 1 -1.1128       1.99200000       9.00199999      26.86300000
+ 32 11 2 0.5564        1.85600000      10.17500000      25.57899999
+ 33 11 2 0.5564        0.51900000       8.09899999      26.38599999
+ 34 12 1 -1.1128       2.05400000       8.66000000      32.51499999
+ 35 12 2 0.5564        2.16699999       8.72700000      30.49400000
+ 36 12 2 0.5564        2.37400001      10.51300000      33.03799999
+ 37 13 1 -1.1128       3.40200000      16.63900001       3.00800000
+ 38 13 2 0.5564        4.12700001      15.87200001       4.44600001
+ 39 13 2 0.5564        2.90500001      18.33899999       3.15999999
+ 40 14 1 -1.1128       4.22200000      15.44400000       8.07200000
+ 41 14 2 0.5564        5.21100000      16.75600000       8.29900001
+ 42 14 2 0.5564        2.56000000      15.49200001       8.86000000
+ 43 15 1 -1.1128       2.83100000       9.24599999      16.48800000
+ 44 15 2 0.5564        2.86900001       8.02300001      18.05000000
+ 45 15 2 0.5564        3.96000000       8.46700001      15.15400000
+ 46 16 1 -1.1128       5.56300000       6.00300000      20.90700000
+ 47 16 2 0.5564        4.65300000       4.63800000      21.48000000
+ 48 16 2 0.5564        6.40500000       6.20800000      22.52899999
+ 49 17 1 -1.1128       2.08700001      13.37000000      22.91299999
+ 50 17 2 0.5564        2.83200000      14.80400001      23.42200000
+ 51 17 2 0.5564        1.43400000      13.50900000      21.19599999
+ 52 18 1 -1.1128       3.36900000      17.88600000      25.10900001
+ 53 18 2 0.5564        3.65500000      17.20000000      26.76599999
+ 54 18 2 0.5564        4.77200001      18.97699999      24.49999999
+ 55 19 1 -1.1128      34.76400000      20.80300000       0.94800001
+ 56 19 2 0.5564       35.20999999      21.26700001       2.81599999
+ 57 19 2 0.5564       35.96200001      21.72599999       0.13099999
+ 58 20 1 -1.1128       2.83600000      24.17799999      15.22900000
+ 59 20 2 0.5564        2.79500000      22.34599999      14.87600001
+ 60 20 2 0.5564        2.41399999      24.11500000      17.13000001
+ 61 21 1 -1.1128      33.00000000      24.48100000      15.23000000
+ 62 21 2 0.5564       34.63999999      24.80400001      15.01299999
+ 63 21 2 0.5564       32.40100000      25.76400000      14.29500001
+ 64 22 1 -1.1128       0.40399999      26.77900001      23.39999999
+ 65 22 2 0.5564        1.35300001      27.24800000      24.98700001
+ 66 22 2 0.5564        1.54600001      28.05000000      22.31700001
+ 67 23 1 -1.1128      34.22200000      21.38000000      25.41799999
+ 68 23 2 0.5564       35.66899999      20.15100000      25.31700001
+ 69 23 2 0.5564       32.96000000      21.18000000      23.99200000
+ 70 24 1 -1.1128      33.25900000      17.43800000      32.48000000
+ 71 24 2 0.5564       33.31399999      18.78200000      33.88300001
+ 72 24 2 0.5564       32.74300001      18.18100001      30.87100000
+ 73 25 1 -1.1128       4.46300000      21.97900000       3.93600000
+ 74 25 2 0.5564        5.85600000      23.08400001       3.39999999
+ 75 25 2 0.5564        3.98600000      22.18000000       5.60200000
+ 76 26 1 -1.1128       6.25800000      25.85100001       8.52000000
+ 77 26 2 0.5564        5.76700000      27.69300001       8.47600000
+ 78 26 2 0.5564        7.20200001      25.50600000      10.18600000
+ 79 27 1 -1.1128       0.60099999      29.73699999      12.74700001
+ 80 27 2 0.5564       -0.68500000      30.84200000      12.34999999
+ 81 27 2 0.5564        1.33600000      30.71600000      14.03099999
+ 82 28 1 -1.1128       7.56300000      28.19100001      24.33300000
+ 83 28 2 0.5564        9.20100000      28.82800000      24.68400000
+ 84 28 2 0.5564        7.38100001      27.62100000      22.79900000
+ 85 29 1 -1.1128       3.65300000      27.10900001      27.77200001
+ 86 29 2 0.5564        5.12600000      27.01500000      26.77200001
+ 87 29 2 0.5564        3.03099999      28.75600000      27.69800000
+ 88 30 1 -1.1128       2.59600001      23.99100001      32.47600000
+ 89 30 2 0.5564        2.87900000      24.79099999      30.85899999
+ 90 30 2 0.5564        4.00300000      22.91299999      32.70099999
+ 91 31 1 -1.1128       3.08300000      31.31700001       3.64399999
+ 92 31 2 0.5564        4.13300000      30.58900001       2.53900001
+ 93 31 2 0.5564        4.21800000      32.17300001       5.03700001
+ 94 32 1 -1.1128       4.66100001      30.55500000       9.36799999
+ 95 32 2 0.5564        3.18400001      29.84300000      10.13200000
+ 96 32 2 0.5564        4.35800000      32.44800000       9.12600000
+ 97 33 1 -1.1128       3.46499999      32.53700000      15.77800000
+ 98 33 2 0.5564        5.07200000      31.81899999      15.90300000
+ 99 33 2 0.5564        4.05500001      34.25699999      15.28400000
+ 100 34 1 -1.1128       4.21500000      29.15299999      20.31700001
+ 101 34 2 0.5564        3.65799999      30.17600000      18.84200000
+ 102 34 2 0.5564        4.95899999      30.29100000      21.44900001
+ 103 35 1 -1.1128       1.12600000      31.33300000      28.76800001
+ 104 35 2 0.5564        2.39500000      31.12399999      29.92500000
+ 105 35 2 0.5564        0.76800001      33.09199999      28.89799999
+ 106 36 1 -1.1128       4.88100000      32.61600000      32.30200000
+ 107 36 2 0.5564        6.58800000      32.91100000      31.72500001
+ 108 36 2 0.5564        4.48599999      34.03700001      33.24900001
+ 109 37 1 -1.1128       8.96200001       5.55600000       0.15100000
+ 110 37 2 0.5564        9.65200000       6.99100001       0.85899999
+ 111 37 2 0.5564        9.17300001       4.47700000       1.64500000
+ 112 38 1 -1.1128       1.83300001       3.51799999       5.67900001
+ 113 38 2 0.5564        2.88900000       2.73100000       6.78800000
+ 114 38 2 0.5564        2.78900000       4.18700000       4.14700000
+ 115 39 1 -1.1128      10.51000001      34.72599999      13.07300001
+ 116 39 2 0.5564       11.91999999      34.11800000      11.91900001
+ 117 39 2 0.5564       11.29500001      34.96800000      14.74100000
+ 118 40 1 -1.1128       7.21200000       0.04199999      22.45399999
+ 119 40 2 0.5564        6.92400000       0.47000000      24.17200000
+ 120 40 2 0.5564        8.31900000       1.22799999      21.65300000
+ 121 41 1 -1.1128       6.36500000       2.01000000      27.54400000
+ 122 41 2 0.5564        5.95400000       3.58500000      26.85199999
+ 123 41 2 0.5564        7.75800001       2.54900000      28.69600000
+ 124 42 1 -1.1128      10.83300001       3.14000000      30.78699999
+ 125 42 2 0.5564       12.69700001       2.97500000      30.86700000
+ 126 42 2 0.5564       10.38899999       3.70000001      32.40399999
+ 127 43 1 -1.1128       8.68400000       9.34200001       3.91200001
+ 128 43 2 0.5564        6.98500000       9.25600001       4.77299999
+ 129 43 2 0.5564        8.68400000      10.80899999       3.01100000
+ 130 44 1 -1.1128       4.87299999       9.91900001       7.70700000
+ 131 44 2 0.5564        3.69800000       9.77100000       6.19400000
+ 132 44 2 0.5564        5.04700000      11.96100000       7.62400000
+ 133 45 1 -1.1128      10.03099999       5.01800000       9.69900000
+ 134 45 2 0.5564        9.67500001       3.38199999      10.34000000
+ 135 45 2 0.5564        9.13200000       5.98700001      10.82500000
+ 136 46 1 -1.1128      11.24599999       3.91800000      21.92900000
+ 137 46 2 0.5564       12.61400001       2.77000000      22.34100000
+ 138 46 2 0.5564       12.07300001       5.68600001      21.49699999
+ 139 47 1 -1.1128       6.82500000       7.16400000      25.70799999
+ 140 47 2 0.5564        8.03600000       8.37400001      25.98000001
+ 141 47 2 0.5564        5.20600001       7.90000000      25.89099999
+ 142 48 1 -1.1128      10.17099999      12.81100001       0.29500001
+ 143 48 2 0.5564       10.03300000      12.81800000      -1.60900000
+ 144 48 2 0.5564        9.87999999      14.49200001       0.48000000
+ 145 49 1 -1.1128       8.19000000      17.40200000       1.25299999
+ 146 49 2 0.5564        9.47199999      18.53100000       1.25299999
+ 147 49 2 0.5564        6.35100000      17.81700000       1.56800001
+ 148 50 1 -1.1128      11.23300000      16.18800001       8.29900001
+ 149 50 2 0.5564       10.29100000      17.68900000       8.16600001
+ 150 50 2 0.5564       12.76800001      17.12300001       8.73299999
+ 151 51 1 -1.1128       6.38599999       8.00199999      12.84600000
+ 152 51 2 0.5564        7.70099999       8.89600000      13.65500000
+ 153 51 2 0.5564        5.59100000       8.87699999      11.51900000
+ 154 52 1 -1.1128       8.18400001      10.41900000      18.84799999
+ 155 52 2 0.5564        9.49800000       9.43400000      19.90500001
+ 156 52 2 0.5564        6.88200000       9.02699999      18.94800001
+ 157 53 1 -1.1128      10.80600000      14.43100000      21.32799999
+ 158 53 2 0.5564        9.17700001      13.53100000      20.67000000
+ 159 53 2 0.5564       11.34400000      15.69600000      20.44800000
+ 160 54 1 -1.1128       9.23700000      13.92800000      30.34100000
+ 161 54 2 0.5564       10.77900001      14.83900000      30.52199999
+ 162 54 2 0.5564        9.96500000      13.19199999      28.89900000
+ 163 55 1 -1.1128      10.91800000      21.70700000       1.86400000
+ 164 55 2 0.5564       10.28000000      23.44900001       2.27900000
+ 165 55 2 0.5564       12.70799999      21.45600000       1.74900000
+ 166 56 1 -1.1128       9.35300001      16.12500000      13.92699999
+ 167 56 2 0.5564        9.93799999      17.59399999      14.61800001
+ 168 56 2 0.5564        9.51799999      16.36000001      12.24400000
+ 169 57 1 -1.1128      10.37099999      11.10700000      14.26800000
+ 170 57 2 0.5564        9.64399999      10.40600001      15.85899999
+ 171 57 2 0.5564        9.43400000      12.52300000      14.11699999
+ 172 58 1 -1.1128       3.35100000      22.76899999      20.19599999
+ 173 58 2 0.5564        2.05500001      23.68600001      21.50300001
+ 174 58 2 0.5564        2.45200000      21.40100000      19.41300000
+ 175 59 1 -1.1128       6.83600000      21.32900000      23.19899999
+ 176 59 2 0.5564        8.24900001      20.84799999      22.32000001
+ 177 59 2 0.5564        5.66800001      21.84099999      21.88600000
+ 178 60 1 -1.1128       4.60399999      15.64900000      30.04300000
+ 179 60 2 0.5564        6.45300001      15.21699999      30.20700000
+ 180 60 2 0.5564        3.82200001      14.76199999      31.56200000
+ 181 61 1 -1.1128       7.12500000      19.97600001       9.42100001
+ 182 61 2 0.5564        5.91800000      20.45300001      10.72999999
+ 183 61 2 0.5564        8.09899999      21.49600001       9.49100000
+ 184 62 1 -1.1128       9.06299999      25.91200001      13.18600000
+ 185 62 2 0.5564       10.34999999      26.57199999      12.36700001
+ 186 62 2 0.5564        9.67999999      24.36700001      13.69700001
+ 187 63 1 -1.1128       8.02200000      22.34299999      17.04199999
+ 188 63 2 0.5564        9.14400000      23.36700001      18.07399999
+ 189 63 2 0.5564        6.56200000      23.46200000      16.85199999
+ 190 64 1 -1.1128      10.76199999      26.28499999      19.96299999
+ 191 64 2 0.5564       11.03600000      27.96599999      20.53800000
+ 192 64 2 0.5564       11.07800000      25.40100000      21.45600000
+ 193 65 1 -1.1128       9.15800000      22.90199999      28.39100000
+ 194 65 2 0.5564        8.21900000      23.52800001      27.08499999
+ 195 65 2 0.5564        8.08900000      21.76000000      29.50900000
+ 196 66 1 -1.1128       6.21900000      20.15800000      31.92100000
+ 197 66 2 0.5564        5.63500000      18.51099999      31.16100000
+ 198 66 2 0.5564        7.53000000      19.62400000      33.07100000
+ 199 67 1 -1.1128      11.19100001      31.50900000       2.61700000
+ 200 67 2 0.5564       10.46000001      32.21399999       4.10800000
+ 201 67 2 0.5564       13.17600000      31.75099999       2.57700000
+ 202 68 1 -1.1128       4.74799999       0.05500001       8.60500000
+ 203 68 2 0.5564        5.38000000       0.51700000      10.18300000
+ 204 68 2 0.5564        6.05000000      -0.30600001       7.48000000
+ 205 69 1 -1.1128       8.69500000      30.80899999      15.73100000
+ 206 69 2 0.5564        9.18899999      32.10300000      14.49500000
+ 207 69 2 0.5564        8.44699999      29.06900000      14.86800000
+ 208 70 1 -1.1128      10.12799999      31.40200000      20.76599999
+ 209 70 2 0.5564        9.45600000      30.90500001      19.15500000
+ 210 70 2 0.5564        9.01999999      32.73100000      21.41500000
+ 211 71 1 -1.1128      12.23800001      30.16200000      25.83699999
+ 212 71 2 0.5564       11.41799999      30.90800001      27.10999999
+ 213 71 2 0.5564       12.39600001      31.33100001      24.67800000
+ 214 72 1 -1.1128      10.39500000      32.53700000      30.62400000
+ 215 72 2 0.5564       11.04199999      34.33899999      30.75099999
+ 216 72 2 0.5564       11.37800001      31.48599999      31.53800000
+ 217 73 1 -1.1128      10.43800000       3.62599999       5.08700001
+ 218 73 2 0.5564       12.43500001       4.08200000       5.13600000
+ 219 73 2 0.5564        9.82200001       4.28400000       6.68100000
+ 220 74 1 -1.1128      14.76199999       3.40100000      13.77599999
+ 221 74 2 0.5564       16.51799999       3.82400000      13.37600000
+ 222 74 2 0.5564       13.75200000       4.75700000      12.96400000
+ 223 75 1 -1.1128      12.38199999       1.01200001      17.64300001
+ 224 75 2 0.5564       13.34599999       1.99700000      16.44400000
+ 225 75 2 0.5564       11.93100000       2.13300000      18.99800001
+ 226 76 1 -1.1128      15.27799999       1.29300000      24.55900000
+ 227 76 2 0.5564       16.07100000       0.94600000      26.36500000
+ 228 76 2 0.5564       15.79399999       0.19899999      23.49900000
+ 229 77 1 -1.1128      22.22600000      31.62700000      24.71199999
+ 230 77 2 0.5564       23.33800001      32.59500000      23.87600001
+ 231 77 2 0.5564       22.16100000      30.05300000      24.13200000
+ 232 78 1 -1.1128      15.63999999       1.84700001      32.71700000
+ 233 78 2 0.5564       17.48800000       2.47300000      31.87400000
+ 234 78 2 0.5564       16.40300001       0.86900001      34.26700001
+ 235 79 1 -1.1128      14.85800001      10.19899999       2.75400001
+ 236 79 2 0.5564       13.36000001      10.71199999       2.28199999
+ 237 79 2 0.5564       14.56000000       9.31600000       4.55900000
+ 238 80 1 -1.1128      15.71700000       8.46900000      10.73900000
+ 239 80 2 0.5564       17.32300000       9.58100000      10.87500000
+ 240 80 2 0.5564       14.57400000       9.63100000      10.22099999
+ 241 81 1 -1.1128      15.24800000      10.39800000      16.52500001
+ 242 81 2 0.5564       16.32400001       9.18100001      16.14899999
+ 243 81 2 0.5564       14.17200000      10.48800000      15.09800001
+ 244 82 1 -1.1128      13.22600000       8.43800000      20.80100001
+ 245 82 2 0.5564       14.04300000       8.99600000      19.29500001
+ 246 82 2 0.5564       14.66100001       7.80200000      22.09300000
+ 247 83 1 -1.1128      10.17300001      10.96100000      25.87500000
+ 248 83 2 0.5564       11.47700000      10.22300000      26.94000000
+ 249 83 2 0.5564       11.26900000      10.73800000      24.34299999
+ 250 84 1 -1.1128      12.79200000       7.73699999      29.17300001
+ 251 84 2 0.5564       12.19899999       6.03799999      29.47499999
+ 252 84 2 0.5564       14.42700000       7.44999999      29.61700000
+ 253 85 1 -1.1128      15.18000000      19.49800000       3.57800000
+ 254 85 2 0.5564       14.88300001      17.59600001       4.08000001
+ 255 85 2 0.5564       16.75400001      19.57899999       2.62599999
+ 256 86 1 -1.1128      12.51700000      11.09300000       7.70099999
+ 257 86 2 0.5564       12.22400001      12.77800000       7.55500000
+ 258 86 2 0.5564       11.15000000      10.39299999       7.05700000
+ 259 87 1 -1.1128      16.26600000      16.27099999      10.75800001
+ 260 87 2 0.5564       16.50700001      15.79500000      12.76800001
+ 261 87 2 0.5564       17.72500001      16.97699999      10.29200001
+ 262 88 1 -1.1128      14.06900000      18.39900001      18.89700000
+ 263 88 2 0.5564       15.51300000      17.52300000      18.15500000
+ 264 88 2 0.5564       14.95800001      18.70900000      20.67300000
+ 265 89 1 -1.1128      14.09899999      15.48000000      25.51000001
+ 266 89 2 0.5564       13.69800000      16.87200001      26.93799999
+ 267 89 2 0.5564       12.56700000      15.37900000      24.44400000
+ 268 90 1 -1.1128      13.30900000      17.57400000      30.29200001
+ 269 90 2 0.5564       14.93700001      16.93399999      30.81000000
+ 270 90 2 0.5564       13.96900001      19.49400000      30.01200001
+ 271 91 1 -1.1128      18.37099999      23.25699999       0.92500000
+ 272 91 2 0.5564       19.47899999      23.48000000       2.32099999
+ 273 91 2 0.5564       19.08700001      24.32499999      -0.36900000
+ 274 92 1 -1.1128      12.10000000      21.72999999      11.35500000
+ 275 92 2 0.5564       13.14100001      22.28700000      12.74300001
+ 276 92 2 0.5564       13.46700001      22.23600000      10.24400000
+ 277 93 1 -1.1128      12.16300001      23.29000000      23.59699999
+ 278 93 2 0.5564       11.32400001      22.73600001      24.94900000
+ 279 93 2 0.5564       13.88200000      22.87200001      23.84000001
+ 280 94 1 -1.1128      20.17300001      26.76100001      22.62800000
+ 281 94 2 0.5564       20.20600001      26.53200001      20.79200000
+ 282 94 2 0.5564       21.55600000      25.74200000      23.38899999
+ 283 95 1 -1.1128      16.70099999      21.16500000      22.60500000
+ 284 95 2 0.5564       18.02800000      20.68600001      23.84799999
+ 285 95 2 0.5564       17.10400000      22.86599999      21.94900000
+ 286 96 1 -1.1128      11.39100000      26.46099999      33.70499999
+ 287 96 2 0.5564        9.84099999      27.19199999      34.04800001
+ 288 96 2 0.5564       11.77599999      25.53999999      35.24300000
+ 289 97 1 -1.1128       9.89799999      25.98900000       4.55300001
+ 290 97 2 0.5564        8.90199999      26.13099999       6.03900000
+ 291 97 2 0.5564       10.28700000      27.80600000       4.37600000
+ 292 98 1 -1.1128      14.30800000      26.96000000      10.87699999
+ 293 98 2 0.5564       15.30200000      27.40500000      12.17300001
+ 294 98 2 0.5564       15.46300000      26.15100000       9.63299999
+ 295 99 1 -1.1128      13.43300000      22.96000000      16.90400000
+ 296 99 2 0.5564       13.40900000      24.13099999      18.13200000
+ 297 99 2 0.5564       13.62400000      21.19100001      17.52000000
+ 298 100 1 -1.1128      16.40900000      26.76800001      26.87500000
+ 299 100 2 0.5564       17.58999999      26.98700001      25.43100000
+ 300 100 2 0.5564       14.75099999      27.70300000      26.23000000
+ 301 101 1 -1.1128      14.40500000      22.73299999      29.89200000
+ 302 101 2 0.5564       15.42300000      23.07900000      28.49400000
+ 303 101 2 0.5564       12.82600001      23.25900000      29.41600000
+ 304 102 1 -1.1128       6.90500001      29.40800000       0.74900000
+ 305 102 2 0.5564        8.42800001      30.48300000       1.56700000
+ 306 102 2 0.5564        6.35300001      30.81400000      -0.44400000
+ 307 103 1 -1.1128       9.18899999      34.15900001       6.50900000
+ 308 103 2 0.5564       10.19800000      34.19300000       8.00199999
+ 309 103 2 0.5564        9.89000001      35.69200000       5.78500000
+ 310 104 1 -1.1128      14.25600001      32.31600000       9.36900000
+ 311 104 2 0.5564       15.73299999      32.86700000       9.48599999
+ 312 104 2 0.5564       14.75400001      30.67000000      10.09000000
+ 313 105 1 -1.1128      14.71400000      30.84099999      16.51600000
+ 314 105 2 0.5564       13.74799999      29.55099999      17.27900000
+ 315 105 2 0.5564       13.21800000      31.93300001      16.61400001
+ 316 106 1 -1.1128      18.40900000      33.64100000      20.61100001
+ 317 106 2 0.5564       19.60099999      32.27400001      21.11500000
+ 318 106 2 0.5564       17.36000001      32.65500000      19.51799999
+ 319 107 1 -1.1128      16.06200001      28.63800000      32.20700000
+ 320 107 2 0.5564       14.64800000      27.95800001      33.25299999
+ 321 107 2 0.5564       15.75200000      28.01400000      30.52199999
+ 322 108 1 -1.1128      16.20000000      30.89499999       1.47300000
+ 323 108 2 0.5564       16.62599999      29.96800000      -0.13000001
+ 324 108 2 0.5564       17.16699999      29.83300001       2.92699999
+ 325 109 1 -1.1128      20.27799999       3.52899999       6.04800001
+ 326 109 2 0.5564       20.97699999       3.61100001       4.57500001
+ 327 109 2 0.5564       21.31200000       4.51300000       7.25100000
+ 328 110 1 -1.1128      23.07900000       5.77800000      10.40800000
+ 329 110 2 0.5564       24.65000001       6.25900000      10.83800000
+ 330 110 2 0.5564       22.34200001       7.60900000      10.17799999
+ 331 111 1 -1.1128      19.58100000       2.03099999      12.10999999
+ 332 111 2 0.5564       19.03900000       1.08200000      10.44000000
+ 333 111 2 0.5564       21.14100001       2.99100001      11.85100001
+ 334 112 1 -1.1128      22.00500001       3.22300000      23.17799999
+ 335 112 2 0.5564       21.42899999       4.09000000      24.55399999
+ 336 112 2 0.5564       20.65400001       1.79099999      22.71100001
+ 337 113 1 -1.1128      16.63000000       6.42200000      23.79200000
+ 338 113 2 0.5564       16.21900000       4.80400001      24.40600001
+ 339 113 2 0.5564       17.06600001       7.12799999      25.28199999
+ 340 114 1 -1.1128      21.67599999       5.56400001      28.15800000
+ 341 114 2 0.5564       20.65799999       6.71700000      29.18499999
+ 342 114 2 0.5564       23.41300000       5.82800000      28.99600000
+ 343 115 1 -1.1128      15.25699999       5.26500000       5.62599999
+ 344 115 2 0.5564       16.91400000       4.51900000       5.48999999
+ 345 115 2 0.5564       15.14400000       6.15000000       6.97200000
+ 346 116 1 -1.1128      20.13700000      11.08200000      10.43700000
+ 347 116 2 0.5564       20.02100000      10.94700000       8.73299999
+ 348 116 2 0.5564       21.02500000      12.55500000      10.85300000
+ 349 117 1 -1.1128      23.08900000      14.62700000      12.43700000
+ 350 117 2 0.5564       24.71600000      15.25400000      12.73600001
+ 351 117 2 0.5564       23.28400000      13.22799999      13.65300000
+ 352 118 1 -1.1128      24.08300000      12.64900000      22.56600000
+ 353 118 2 0.5564       22.39700000      12.66300000      23.04199999
+ 354 118 2 0.5564       24.90100001      13.85100001      23.56499999
+ 355 119 1 -1.1128      17.86500001       7.90899999      30.03600000
+ 356 119 2 0.5564       17.50900000       8.04499999      31.98200000
+ 357 119 2 0.5564       18.07800000       9.58200001      29.31799999
+ 358 120 1 -1.1128      18.82400000       8.48599999       0.10400000
+ 359 120 2 0.5564       19.99700000      10.19100001      -0.05700000
+ 360 120 2 0.5564       17.07700001       8.99800001       0.77900001
+ 361 121 1 -1.1128      20.12200000       9.14300000       5.34299999
+ 362 121 2 0.5564       19.37300000       8.81899999       3.82100000
+ 363 121 2 0.5564       21.99800001       8.77599999       5.12799999
+ 364 122 1 -1.1128      16.41300000      14.45900000       5.85499999
+ 365 122 2 0.5564       15.53599999      13.00700000       5.23899999
+ 366 122 2 0.5564       16.00599999      14.72500001       7.73699999
+ 367 123 1 -1.1128      17.56099999      15.06600001      15.65400001
+ 368 123 2 0.5564       17.57500001      13.39800000      16.05500001
+ 369 123 2 0.5564       18.97800000      15.82800000      16.39999999
+ 370 124 1 -1.1128      26.37400001      17.04700000      24.81700000
+ 371 124 2 0.5564       27.98300000      17.09800001      25.63200001
+ 372 124 2 0.5564       25.62900001      18.75099999      24.91900001
+ 373 125 1 -1.1128      19.78400000      12.96000000      28.70600000
+ 374 125 2 0.5564       21.66199999      13.05500001      28.87100000
+ 375 125 2 0.5564       19.54500000      14.06999999      27.14300000
+ 376 126 1 -1.1128      17.89099999      16.73299999      32.49900000
+ 377 126 2 0.5564       18.32700000      15.24000000      31.27700001
+ 378 126 2 0.5564       18.63299999      18.33500001      31.69300001
+ 379 127 1 -1.1128      23.73299999      23.02399999       1.66300000
+ 380 127 2 0.5564       24.80000000      24.05199999       2.77599999
+ 381 127 2 0.5564       24.69300001      22.61800001       0.19800000
+ 382 128 1 -1.1128      20.78900000      18.44000000       9.44299999
+ 383 128 2 0.5564       20.76599999      17.25699999       7.88100000
+ 384 128 2 0.5564       21.89600000      17.34500000      10.38500001
+ 385 129 1 -1.1128      21.57400000      17.49299999      17.83800000
+ 386 129 2 0.5564       20.59699999      18.95500001      17.21800000
+ 387 129 2 0.5564       22.53800000      16.87400000      16.25100000
+ 388 130 1 -1.1128      19.16800000      14.74799999      24.13099999
+ 389 130 2 0.5564       19.71100001      16.39000000      23.71199999
+ 390 130 2 0.5564       17.42899999      14.69500000      24.40300001
+ 391 131 1 -1.1128      22.14899999      20.19800000      24.97699999
+ 392 131 2 0.5564       21.63900001      20.92400000      26.48599999
+ 393 131 2 0.5564       22.65600000      21.65700001      24.41099999
+ 394 132 1 -1.1128      20.56499999      20.79200000      29.60000001
+ 395 132 2 0.5564       22.26399999      20.40900000      30.21399999
+ 396 132 2 0.5564       20.54800000      22.40800000      30.59699999
+ 397 133 1 -1.1128      20.80200000      26.54699999       9.61499999
+ 398 133 2 0.5564       20.09899999      27.98399999       8.33800001
+ 399 133 2 0.5564       21.27700001      27.53900001      11.32499999
+ 400 134 1 -1.1128      16.28300000      23.58900001       7.77900001
+ 401 134 2 0.5564       16.09300000      21.97300001       6.71199999
+ 402 134 2 0.5564       17.90100001      22.97100000       8.15400000
+ 403 135 1 -1.1128      18.46900000      29.79799999      13.56800001
+ 404 135 2 0.5564       19.71199999      31.21600000      13.50600000
+ 405 135 2 0.5564       16.87200001      30.34299999      14.39600001
+ 406 136 1 -1.1128      18.79000001      21.71199999      16.06000000
+ 407 136 2 0.5564       19.87800000      23.09000000      16.48500001
+ 408 136 2 0.5564       17.20100000      22.32600000      15.81899999
+ 409 137 1 -1.1128      21.74700001      26.08400001      16.34900001
+ 410 137 2 0.5564       20.78300001      27.02100000      15.29999999
+ 411 137 2 0.5564       22.70499999      27.32799999      17.20600001
+ 412 138 1 -1.1128      20.76899999      26.21100000      32.05000000
+ 413 138 2 0.5564       21.48800000      27.40399999      33.32799999
+ 414 138 2 0.5564       18.98900000      26.71000000      32.14500001
+ 415 139 1 -1.1128      19.82000000      29.18100001       5.55900000
+ 416 139 2 0.5564       20.99100001      29.50900000       4.10900001
+ 417 139 2 0.5564       19.43100000      31.01800000       6.22099999
+ 418 140 1 -1.1128      19.24000000      33.86700000       7.99300000
+ 419 140 2 0.5564       19.10700000      35.03900000       6.60399999
+ 420 140 2 0.5564       20.69700001      33.67100000       9.06299999
+ 421 141 1 -1.1128      22.51099999      34.97600001      15.79300000
+ 422 141 2 0.5564       23.71600000      36.16300001      16.60300000
+ 423 141 2 0.5564       21.69900000      36.15000000      14.46700001
+ 424 142 1 -1.1128      22.62199999      30.28400000      19.06900000
+ 425 142 2 0.5564       22.04899999      31.35100000      17.72500001
+ 426 142 2 0.5564       24.41099999      30.77299999      19.57599999
+ 427 143 1 -1.1128      18.63900001      33.61100001      28.36900000
+ 428 143 2 0.5564       18.22600000      32.15900001      29.10300000
+ 429 143 2 0.5564       19.90600000      33.00800000      27.15800000
+ 430 144 1 -1.1128      22.52000000       1.32499999      31.92600001
+ 431 144 2 0.5564       22.80300000       2.66800001      30.79600000
+ 432 144 2 0.5564       21.04499999       0.42499999      31.12200000
+ 433 145 1 -1.1128      21.75400001       3.78900000       1.15900001
+ 434 145 2 0.5564       22.08499999       2.78500000      -0.18000000
+ 435 145 2 0.5564       20.85000000       5.17500000       0.61000000
+ 436 146 1 -1.1128      28.45699999       5.53900001      12.13300000
+ 437 146 2 0.5564       29.48900001       4.39000000      11.18200000
+ 438 146 2 0.5564       29.16100000       7.13099999      12.58700000
+ 439 147 1 -1.1128      22.49500000       5.96599999      17.32400001
+ 440 147 2 0.5564       24.37700000       5.37900000      17.39299999
+ 441 147 2 0.5564       21.90600000       5.49100000      18.85700000
+ 442 148 1 -1.1128      28.12799999       3.30400000      22.28700000
+ 443 148 2 0.5564       28.12300001       2.99899999      20.49100000
+ 444 148 2 0.5564       26.53299999       3.35500000      22.87600001
+ 445 149 1 -1.1128      28.37800001      10.45500000      27.26600000
+ 446 149 2 0.5564       30.01900001      10.29200001      28.05100000
+ 447 149 2 0.5564       28.63500000      10.03900000      25.46300000
+ 448 150 1 -1.1128      27.03099999       8.35300001      34.80600000
+ 449 150 2 0.5564       26.11600001       9.98399999      34.57100001
+ 450 150 2 0.5564       28.68500000       8.95100001      34.73900000
+ 451 151 1 -1.1128      24.95100001       8.15999999       4.45399999
+ 452 151 2 0.5564       25.93000001       9.61600000       5.15999999
+ 453 151 2 0.5564       25.94700000       7.99400001       2.72400000
+ 454 152 1 -1.1128      26.93700001      12.43599999       6.86900001
+ 455 152 2 0.5564       25.49200001      13.28400000       6.70799999
+ 456 152 2 0.5564       27.68900000      13.33199999       8.26600000
+ 457 153 1 -1.1128      23.36500000      11.21399999      16.93300001
+ 458 153 2 0.5564       22.24700000       9.74399999      16.78900000
+ 459 153 2 0.5564       23.26399999      12.03500000      18.53900001
+ 460 154 1 -1.1128      28.32099999       8.75900000      22.15800000
+ 461 154 2 0.5564       27.66199999       6.89499999      22.48200001
+ 462 154 2 0.5564       26.97100000       9.71000000      21.90199999
+ 463 155 1 -1.1128      27.07100000       6.10900001      29.55500000
+ 464 155 2 0.5564       27.59100000       7.66300000      28.85700000
+ 465 155 2 0.5564       27.30400000       6.32000001      31.26100000
+ 466 156 1 -1.1128      22.47400000      11.70400001      34.63999999
+ 467 156 2 0.5564       22.75200000      13.30400000      35.58400000
+ 468 156 2 0.5564       22.84000001      12.09000000      33.03000001
+ 469 157 1 -1.1128      21.65600000      14.97100000       5.61499999
+ 470 157 2 0.5564       21.68999999      15.86000000       3.97699999
+ 471 157 2 0.5564       19.96400000      14.22500000       5.77400000
+ 472 158 1 -1.1128      28.53900001      21.49200001       9.82000000
+ 473 158 2 0.5564       27.28800001      22.18100001       8.68800000
+ 474 158 2 0.5564       28.06500000      22.42000000      11.60200000
+ 475 159 1 -1.1128      28.36399999      16.01999999      11.10900001
+ 476 159 2 0.5564       30.03300000      16.64900000      12.08900000
+ 477 159 2 0.5564       28.45600000      17.44000000      10.08200000
+ 478 160 1 -1.1128       0.05400000      13.68600001      18.10300000
+ 479 160 2 0.5564       -1.71400000      12.92800000      18.84099999
+ 480 160 2 0.5564        1.00800000      12.42899999      17.38300000
+ 481 161 1 -1.1128      24.63600001      12.89400001      29.95700000
+ 482 161 2 0.5564       25.90600000      13.91400000      31.18300000
+ 483 161 2 0.5564       25.64100000      11.60900000      29.16200000
+ 484 162 1 -1.1128      21.54800000      17.25000000       0.74900000
+ 485 162 2 0.5564       21.84300000      19.02600000       0.90500001
+ 486 162 2 0.5564       20.38500001      16.71600000      -0.69700001
+ 487 163 1 -1.1128      26.09499999      27.27400001       4.52000000
+ 488 163 2 0.5564       27.88900000      26.45800000       4.50500000
+ 489 163 2 0.5564       25.64800000      26.96999999       6.16500000
+ 490 164 1 -1.1128      23.61000000      22.51499999       8.00800000
+ 491 164 2 0.5564       22.65300000      21.18700000       8.73900000
+ 492 164 2 0.5564       22.28600000      24.09499999       8.44400000
+ 493 165 1 -1.1128      27.35500000      18.92900000      18.18000000
+ 494 165 2 0.5564       27.20000000      20.34900001      17.15500000
+ 495 165 2 0.5564       25.57899999      18.32200000      18.77000000
+ 496 166 1 -1.1128      26.76500001      23.63299999      14.44400000
+ 497 166 2 0.5564       27.44100000      25.29800000      13.65099999
+ 498 166 2 0.5564       25.08600000      24.25600001      14.74900000
+ 499 167 1 -1.1128      31.47800001      20.76899999      20.98600000
+ 500 167 2 0.5564       30.44000000      22.50900000      21.13499999
+ 501 167 2 0.5564       30.56700000      19.65600000      20.04300000
+ 502 168 1 -1.1128      24.81199999      20.41200000      32.66800001
+ 503 168 2 0.5564       26.24199999      21.47800001      31.87400000
+ 504 168 2 0.5564       25.78699999      19.02300001      33.15800000
+ 505 169 1 -1.1128      22.10500001      29.07600000       0.92800000
+ 506 169 2 0.5564       23.29599999      27.92299999       1.73900000
+ 507 169 2 0.5564       22.62300000      30.99400001       0.88200000
+ 508 170 1 -1.1128      29.57199999      31.25600001       8.62599999
+ 509 170 2 0.5564       30.79500000      30.20299999       7.73600001
+ 510 170 2 0.5564       28.27700001      31.51900000       7.25999999
+ 511 171 1 -1.1128      31.81700000      34.84300000      18.28300000
+ 512 171 2 0.5564       32.43800000      34.38899999      16.47400000
+ 513 171 2 0.5564       32.74300001      36.42200000      18.34100000
+ 514 172 1 -1.1128      27.91500001      25.60099999      19.03300000
+ 515 172 2 0.5564       29.35800000      26.56099999      19.19000000
+ 516 172 2 0.5564       28.14800001      24.42899999      17.53000000
+ 517 173 1 -1.1128      24.54800000      24.65400001      24.02500000
+ 518 173 2 0.5564       25.52800001      25.63500000      22.82400000
+ 519 173 2 0.5564       25.29999999      25.20000000      25.64500000
+ 520 174 1 -1.1128      28.53999999      22.92200000      30.37000000
+ 521 174 2 0.5564       27.41399999      24.09600000      29.78100000
+ 522 174 2 0.5564       29.67400000      23.91400000      31.87299999
+ 523 175 1 -1.1128      24.96900001      33.62300000       1.01400000
+ 524 175 2 0.5564       26.52100001      33.05800000       1.51799999
+ 525 175 2 0.5564       24.99000000      34.32200000      -0.68299999
+ 526 176 1 -1.1128      23.07500000      32.17099999      11.32400001
+ 527 176 2 0.5564       23.31600000      32.77500000      13.09700000
+ 528 176 2 0.5564       24.46000001      33.20299999      10.66199999
+ 529 177 1 -1.1128      27.49699999       2.73600001      17.22400001
+ 530 177 2 0.5564       28.39700000       3.41500000      15.71500001
+ 531 177 2 0.5564       28.23400001       1.23300000      17.41200000
+ 532 178 1 -1.1128      26.36900000      33.06000000      22.07700001
+ 533 178 2 0.5564       26.17000001      34.74600000      22.26399999
+ 534 178 2 0.5564       27.59200000      32.40399999      23.32099999
+ 535 179 1 -1.1128      30.22099999      30.95000000      25.84300000
+ 536 179 2 0.5564       30.30500000      29.03799999      26.20800000
+ 537 179 2 0.5564       30.36300001      31.97900000      27.41399999
+ 538 180 1 -1.1128      24.97300001      26.73200000      28.60700001
+ 539 180 2 0.5564       25.38500001      28.36900000      29.24800000
+ 540 180 2 0.5564       23.33000000      26.59699999      29.23400001
+ 541 181 1 -1.1128      32.16500000       4.85700000       2.25800000
+ 542 181 2 0.5564       32.41700001       6.19500001       1.15700000
+ 543 181 2 0.5564       32.61499999       3.72700000       1.11200000
+ 544 182 1 -1.1128      28.06699999       3.53299999       5.21699999
+ 545 182 2 0.5564       26.96000000       4.44699999       4.15800000
+ 546 182 2 0.5564       29.87500000       3.86300000       4.44800000
+ 547 183 1 -1.1128      33.27900000       2.78200000      13.02800000
+ 548 183 2 0.5564       33.70799999       3.95500001      11.81700000
+ 549 183 2 0.5564       33.65600000       3.54500000      14.63100000
+ 550 184 1 -1.1128      34.27799999       4.94400001      17.49200001
+ 551 184 2 0.5564       33.43800000       6.56300000      17.87600001
+ 552 184 2 0.5564       34.90600000       4.45200000      18.99499999
+ 553 185 1 -1.1128      32.36300001       1.90800001      26.09199999
+ 554 185 2 0.5564       31.94099999       1.68299999      24.26800000
+ 555 185 2 0.5564       33.85000000       1.39000000      26.90400000
+ 556 186 1 -1.1128      27.98200000       0.41799999      28.24100000
+ 557 186 2 0.5564       27.51600000       2.08000001      28.30900000
+ 558 186 2 0.5564       29.59300001       0.17600000      27.29900001
+ 559 187 1 -1.1128      28.84500000      14.67200001       2.72400000
+ 560 187 2 0.5564       27.96299999      13.93000001       4.13900000
+ 561 187 2 0.5564       30.38599999      15.71400000       3.37900000
+ 562 188 1 -1.1128      28.08300000      10.61800001      14.29800000
+ 563 188 2 0.5564       28.62300000      12.15999999      13.29300000
+ 564 188 2 0.5564       26.48599999      11.01500000      15.37900000
+ 565 189 1 -1.1128      33.86700000      10.54500000      13.30600001
+ 566 189 2 0.5564       35.16500000       9.61200000      13.81000000
+ 567 189 2 0.5564       33.61499999      10.27000001      11.51300000
+ 568 190 1 -1.1128      31.79000001       9.69600000      18.22300000
+ 569 190 2 0.5564       30.48400000       9.33400000      19.42100001
+ 570 190 2 0.5564       30.83399999      10.09600000      16.92900000
+ 571 191 1 -1.1128      30.14100001      15.00599999      21.53200001
+ 572 191 2 0.5564       28.56499999      15.59399999      22.09899999
+ 573 191 2 0.5564       30.94200000      14.25299999      23.07700001
+ 574 192 1 -1.1128      32.79799999      10.73200000      30.67999999
+ 575 192 2 0.5564       34.07300001       9.52800001      30.79900000
+ 576 192 2 0.5564       32.99100001      11.51200000      28.98300000
+ 577 193 1 -1.1128      33.65200000      16.26500000       5.08600000
+ 578 193 2 0.5564       35.39900001      16.23899999       4.72999999
+ 579 193 2 0.5564       33.50300001      17.93900000       5.63100000
+ 580 194 1 -1.1128      31.94700000      10.79900000       7.94300000
+ 581 194 2 0.5564       29.89400001      10.54900000       7.61899999
+ 582 194 2 0.5564       32.27099999      12.41399999       7.07500000
+ 583 195 1 -1.1128       0.32900000      15.51600000      11.74600000
+ 584 195 2 0.5564       -0.44600001      14.24900001      12.93900000
+ 585 195 2 0.5564       -0.68500000      17.01800000      11.93500000
+ 586 196 1 -1.1128       4.26200000      19.16500000      14.30800000
+ 587 196 2 0.5564        3.57899999      17.69100000      14.91999999
+ 588 196 2 0.5564        5.72299999      19.18300000      15.20400000
+ 589 197 1 -1.1128      32.99499999      13.54600001      25.94800001
+ 590 197 2 0.5564       32.16699999      15.06000000      26.78699999
+ 591 197 2 0.5564       34.42499999      13.80000000      25.00700000
+ 592 198 1 -1.1128       1.77299999      13.52400000      34.03700001
+ 593 198 2 0.5564        0.22700001      14.40900000      33.44600001
+ 594 198 2 0.5564        2.16699999      14.67000000      35.51099999
+ 595 199 1 -1.1128      33.02900000      20.52899999       7.24700000
+ 596 199 2 0.5564       34.38800000      21.41399999       8.00300000
+ 597 199 2 0.5564       31.45100000      20.83100000       8.18200000
+ 598 200 1 -1.1128       2.03700001      24.25000000      10.25100000
+ 599 200 2 0.5564        3.74300001      25.00800000       9.87600001
+ 600 200 2 0.5564        1.89400001      25.04300000      11.90300000
+ 601 201 1 -1.1128      32.75300000      19.25900000      13.97600001
+ 602 201 2 0.5564       32.79200000      20.88600000      13.79200000
+ 603 201 2 0.5564       34.33400000      18.79900000      14.97600001
+ 604 202 1 -1.1128       0.39600001      18.67300000      18.69900000
+ 605 202 2 0.5564       -1.21100000      18.95000000      19.12700001
+ 606 202 2 0.5564        0.46900000      16.97699999      18.43599999
+ 607 203 1 -1.1128      30.85499999      18.37000000      27.95899999
+ 608 203 2 0.5564       29.75900000      19.68100000      28.68999999
+ 609 203 2 0.5564       32.10300000      19.47700000      26.76300000
+ 610 204 1 -1.1128      27.72299999      15.99200000      33.09100001
+ 611 204 2 0.5564       29.39000000      16.42300000      32.19199999
+ 612 204 2 0.5564       27.80100001      15.85899999      34.80400001
+ 613 205 1 -1.1128      31.06800000      27.89499999       3.34800000
+ 614 205 2 0.5564       32.51700000      27.82500000       4.61000000
+ 615 205 2 0.5564       31.52899999      29.45900000       2.32400001
+ 616 206 1 -1.1128      35.03900000      28.00800000       6.66300000
+ 617 206 2 0.5564       35.96599999      26.93399999       7.68299999
+ 618 206 2 0.5564       36.05500001      28.33600000       5.33600000
+ 619 207 1 -1.1128      29.35600001      28.19599999      13.02500000
+ 620 207 2 0.5564       29.20999999      29.33500001      14.58900001
+ 621 207 2 0.5564       28.87400000      29.62900001      11.86700000
+ 622 208 1 -1.1128      32.38599999      28.43400000      18.96100000
+ 623 208 2 0.5564       33.36799999      28.57400000      20.41099999
+ 624 208 2 0.5564       33.41000001      27.40600001      17.94900000
+ 625 209 1 -1.1128      30.89799999      25.39000000      25.79900000
+ 626 209 2 0.5564       32.36900000      25.91299999      24.58000000
+ 627 209 2 0.5564       31.31700001      24.07500000      27.02900000
+ 628 210 1 -1.1128      32.25900000      25.61100001      33.10400000
+ 629 210 2 0.5564       32.23800001      25.73600001      34.80600000
+ 630 210 2 0.5564       33.91999999      25.04199999      32.77500000
+ 631 211 1 -1.1128      30.29000000      32.64500000       1.34100000
+ 632 211 2 0.5564       29.94900000      32.79300000      -0.43000000
+ 633 211 2 0.5564       31.76199999      33.34000000       1.84700001
+ 634 212 1 -1.1128      25.53599999      34.23499999       6.46900000
+ 635 212 2 0.5564       25.71600000      36.05900001       6.65099999
+ 636 212 2 0.5564       25.28300000      33.86599999       4.89499999
+ 637 213 1 -1.1128      31.67400000      33.16100000      13.10599999
+ 638 213 2 0.5564       31.79300000      34.86300000      13.28100001
+ 639 213 2 0.5564       30.42499999      32.92800000      11.78300001
+ 640 214 1 -1.1128      33.84400001      32.66800001      22.29599999
+ 641 214 2 0.5564       32.75000000      32.23400001      23.52400000
+ 642 214 2 0.5564       32.91700000      32.87500000      20.73600001
+ 643 215 1 -1.1128      31.60300000      30.54200000      30.80499999
+ 644 215 2 0.5564       33.45100000      30.80400001      30.46799999
+ 645 215 2 0.5564       31.57500001      28.81599999      31.75600000
+ 646 216 1 -1.1128      26.29500001      31.23499999      30.59900000
+ 647 216 2 0.5564       27.83399999      30.51499999      30.60700001
+ 648 216 2 0.5564       26.36200000      32.91999999      29.85600000
+
+Bonds
+
+ 1 1 1 2
+ 2 1 1 3
+ 3 1 4 5
+ 4 1 4 6
+ 5 1 7 8
+ 6 1 7 9
+ 7 1 10 11
+ 8 1 10 12
+ 9 1 13 14
+ 10 1 13 15
+ 11 1 16 17
+ 12 1 16 18
+ 13 1 19 20
+ 14 1 19 21
+ 15 1 22 23
+ 16 1 22 24
+ 17 1 25 26
+ 18 1 25 27
+ 19 1 28 29
+ 20 1 28 30
+ 21 1 31 32
+ 22 1 31 33
+ 23 1 34 35
+ 24 1 34 36
+ 25 1 37 38
+ 26 1 37 39
+ 27 1 40 41
+ 28 1 40 42
+ 29 1 43 44
+ 30 1 43 45
+ 31 1 46 47
+ 32 1 46 48
+ 33 1 49 50
+ 34 1 49 51
+ 35 1 52 53
+ 36 1 52 54
+ 37 1 55 56
+ 38 1 55 57
+ 39 1 58 59
+ 40 1 58 60
+ 41 1 61 62
+ 42 1 61 63
+ 43 1 64 65
+ 44 1 64 66
+ 45 1 67 68
+ 46 1 67 69
+ 47 1 70 71
+ 48 1 70 72
+ 49 1 73 74
+ 50 1 73 75
+ 51 1 76 77
+ 52 1 76 78
+ 53 1 79 80
+ 54 1 79 81
+ 55 1 82 83
+ 56 1 82 84
+ 57 1 85 86
+ 58 1 85 87
+ 59 1 88 89
+ 60 1 88 90
+ 61 1 91 92
+ 62 1 91 93
+ 63 1 94 95
+ 64 1 94 96
+ 65 1 97 98
+ 66 1 97 99
+ 67 1 100 101
+ 68 1 100 102
+ 69 1 103 104
+ 70 1 103 105
+ 71 1 106 107
+ 72 1 106 108
+ 73 1 109 110
+ 74 1 109 111
+ 75 1 112 113
+ 76 1 112 114
+ 77 1 115 116
+ 78 1 115 117
+ 79 1 118 119
+ 80 1 118 120
+ 81 1 121 122
+ 82 1 121 123
+ 83 1 124 125
+ 84 1 124 126
+ 85 1 127 128
+ 86 1 127 129
+ 87 1 130 131
+ 88 1 130 132
+ 89 1 133 134
+ 90 1 133 135
+ 91 1 136 137
+ 92 1 136 138
+ 93 1 139 140
+ 94 1 139 141
+ 95 1 142 143
+ 96 1 142 144
+ 97 1 145 146
+ 98 1 145 147
+ 99 1 148 149
+ 100 1 148 150
+ 101 1 151 152
+ 102 1 151 153
+ 103 1 154 155
+ 104 1 154 156
+ 105 1 157 158
+ 106 1 157 159
+ 107 1 160 161
+ 108 1 160 162
+ 109 1 163 164
+ 110 1 163 165
+ 111 1 166 167
+ 112 1 166 168
+ 113 1 169 170
+ 114 1 169 171
+ 115 1 172 173
+ 116 1 172 174
+ 117 1 175 176
+ 118 1 175 177
+ 119 1 178 179
+ 120 1 178 180
+ 121 1 181 182
+ 122 1 181 183
+ 123 1 184 185
+ 124 1 184 186
+ 125 1 187 188
+ 126 1 187 189
+ 127 1 190 191
+ 128 1 190 192
+ 129 1 193 194
+ 130 1 193 195
+ 131 1 196 197
+ 132 1 196 198
+ 133 1 199 200
+ 134 1 199 201
+ 135 1 202 203
+ 136 1 202 204
+ 137 1 205 206
+ 138 1 205 207
+ 139 1 208 209
+ 140 1 208 210
+ 141 1 211 212
+ 142 1 211 213
+ 143 1 214 215
+ 144 1 214 216
+ 145 1 217 218
+ 146 1 217 219
+ 147 1 220 221
+ 148 1 220 222
+ 149 1 223 224
+ 150 1 223 225
+ 151 1 226 227
+ 152 1 226 228
+ 153 1 229 230
+ 154 1 229 231
+ 155 1 232 233
+ 156 1 232 234
+ 157 1 235 236
+ 158 1 235 237
+ 159 1 238 239
+ 160 1 238 240
+ 161 1 241 242
+ 162 1 241 243
+ 163 1 244 245
+ 164 1 244 246
+ 165 1 247 248
+ 166 1 247 249
+ 167 1 250 251
+ 168 1 250 252
+ 169 1 253 254
+ 170 1 253 255
+ 171 1 256 257
+ 172 1 256 258
+ 173 1 259 260
+ 174 1 259 261
+ 175 1 262 263
+ 176 1 262 264
+ 177 1 265 266
+ 178 1 265 267
+ 179 1 268 269
+ 180 1 268 270
+ 181 1 271 272
+ 182 1 271 273
+ 183 1 274 275
+ 184 1 274 276
+ 185 1 277 278
+ 186 1 277 279
+ 187 1 280 281
+ 188 1 280 282
+ 189 1 283 284
+ 190 1 283 285
+ 191 1 286 287
+ 192 1 286 288
+ 193 1 289 290
+ 194 1 289 291
+ 195 1 292 293
+ 196 1 292 294
+ 197 1 295 296
+ 198 1 295 297
+ 199 1 298 299
+ 200 1 298 300
+ 201 1 301 302
+ 202 1 301 303
+ 203 1 304 305
+ 204 1 304 306
+ 205 1 307 308
+ 206 1 307 309
+ 207 1 310 311
+ 208 1 310 312
+ 209 1 313 314
+ 210 1 313 315
+ 211 1 316 317
+ 212 1 316 318
+ 213 1 319 320
+ 214 1 319 321
+ 215 1 322 323
+ 216 1 322 324
+ 217 1 325 326
+ 218 1 325 327
+ 219 1 328 329
+ 220 1 328 330
+ 221 1 331 332
+ 222 1 331 333
+ 223 1 334 335
+ 224 1 334 336
+ 225 1 337 338
+ 226 1 337 339
+ 227 1 340 341
+ 228 1 340 342
+ 229 1 343 344
+ 230 1 343 345
+ 231 1 346 347
+ 232 1 346 348
+ 233 1 349 350
+ 234 1 349 351
+ 235 1 352 353
+ 236 1 352 354
+ 237 1 355 356
+ 238 1 355 357
+ 239 1 358 359
+ 240 1 358 360
+ 241 1 361 362
+ 242 1 361 363
+ 243 1 364 365
+ 244 1 364 366
+ 245 1 367 368
+ 246 1 367 369
+ 247 1 370 371
+ 248 1 370 372
+ 249 1 373 374
+ 250 1 373 375
+ 251 1 376 377
+ 252 1 376 378
+ 253 1 379 380
+ 254 1 379 381
+ 255 1 382 383
+ 256 1 382 384
+ 257 1 385 386
+ 258 1 385 387
+ 259 1 388 389
+ 260 1 388 390
+ 261 1 391 392
+ 262 1 391 393
+ 263 1 394 395
+ 264 1 394 396
+ 265 1 397 398
+ 266 1 397 399
+ 267 1 400 401
+ 268 1 400 402
+ 269 1 403 404
+ 270 1 403 405
+ 271 1 406 407
+ 272 1 406 408
+ 273 1 409 410
+ 274 1 409 411
+ 275 1 412 413
+ 276 1 412 414
+ 277 1 415 416
+ 278 1 415 417
+ 279 1 418 419
+ 280 1 418 420
+ 281 1 421 422
+ 282 1 421 423
+ 283 1 424 425
+ 284 1 424 426
+ 285 1 427 428
+ 286 1 427 429
+ 287 1 430 431
+ 288 1 430 432
+ 289 1 433 434
+ 290 1 433 435
+ 291 1 436 437
+ 292 1 436 438
+ 293 1 439 440
+ 294 1 439 441
+ 295 1 442 443
+ 296 1 442 444
+ 297 1 445 446
+ 298 1 445 447
+ 299 1 448 449
+ 300 1 448 450
+ 301 1 451 452
+ 302 1 451 453
+ 303 1 454 455
+ 304 1 454 456
+ 305 1 457 458
+ 306 1 457 459
+ 307 1 460 461
+ 308 1 460 462
+ 309 1 463 464
+ 310 1 463 465
+ 311 1 466 467
+ 312 1 466 468
+ 313 1 469 470
+ 314 1 469 471
+ 315 1 472 473
+ 316 1 472 474
+ 317 1 475 476
+ 318 1 475 477
+ 319 1 478 479
+ 320 1 478 480
+ 321 1 481 482
+ 322 1 481 483
+ 323 1 484 485
+ 324 1 484 486
+ 325 1 487 488
+ 326 1 487 489
+ 327 1 490 491
+ 328 1 490 492
+ 329 1 493 494
+ 330 1 493 495
+ 331 1 496 497
+ 332 1 496 498
+ 333 1 499 500
+ 334 1 499 501
+ 335 1 502 503
+ 336 1 502 504
+ 337 1 505 506
+ 338 1 505 507
+ 339 1 508 509
+ 340 1 508 510
+ 341 1 511 512
+ 342 1 511 513
+ 343 1 514 515
+ 344 1 514 516
+ 345 1 517 518
+ 346 1 517 519
+ 347 1 520 521
+ 348 1 520 522
+ 349 1 523 524
+ 350 1 523 525
+ 351 1 526 527
+ 352 1 526 528
+ 353 1 529 530
+ 354 1 529 531
+ 355 1 532 533
+ 356 1 532 534
+ 357 1 535 536
+ 358 1 535 537
+ 359 1 538 539
+ 360 1 538 540
+ 361 1 541 542
+ 362 1 541 543
+ 363 1 544 545
+ 364 1 544 546
+ 365 1 547 548
+ 366 1 547 549
+ 367 1 550 551
+ 368 1 550 552
+ 369 1 553 554
+ 370 1 553 555
+ 371 1 556 557
+ 372 1 556 558
+ 373 1 559 560
+ 374 1 559 561
+ 375 1 562 563
+ 376 1 562 564
+ 377 1 565 566
+ 378 1 565 567
+ 379 1 568 569
+ 380 1 568 570
+ 381 1 571 572
+ 382 1 571 573
+ 383 1 574 575
+ 384 1 574 576
+ 385 1 577 578
+ 386 1 577 579
+ 387 1 580 581
+ 388 1 580 582
+ 389 1 583 584
+ 390 1 583 585
+ 391 1 586 587
+ 392 1 586 588
+ 393 1 589 590
+ 394 1 589 591
+ 395 1 592 593
+ 396 1 592 594
+ 397 1 595 596
+ 398 1 595 597
+ 399 1 598 599
+ 400 1 598 600
+ 401 1 601 602
+ 402 1 601 603
+ 403 1 604 605
+ 404 1 604 606
+ 405 1 607 608
+ 406 1 607 609
+ 407 1 610 611
+ 408 1 610 612
+ 409 1 613 614
+ 410 1 613 615
+ 411 1 616 617
+ 412 1 616 618
+ 413 1 619 620
+ 414 1 619 621
+ 415 1 622 623
+ 416 1 622 624
+ 417 1 625 626
+ 418 1 625 627
+ 419 1 628 629
+ 420 1 628 630
+ 421 1 631 632
+ 422 1 631 633
+ 423 1 634 635
+ 424 1 634 636
+ 425 1 637 638
+ 426 1 637 639
+ 427 1 640 641
+ 428 1 640 642
+ 429 1 643 644
+ 430 1 643 645
+ 431 1 646 647
+ 432 1 646 648
+
+Angles
+
+ 1 1 2 1 3
+ 2 1 5 4 6
+ 3 1 8 7 9
+ 4 1 11 10 12
+ 5 1 14 13 15
+ 6 1 17 16 18
+ 7 1 20 19 21
+ 8 1 23 22 24
+ 9 1 26 25 27
+ 10 1 29 28 30
+ 11 1 32 31 33
+ 12 1 35 34 36
+ 13 1 38 37 39
+ 14 1 41 40 42
+ 15 1 44 43 45
+ 16 1 47 46 48
+ 17 1 50 49 51
+ 18 1 53 52 54
+ 19 1 56 55 57
+ 20 1 59 58 60
+ 21 1 62 61 63
+ 22 1 65 64 66
+ 23 1 68 67 69
+ 24 1 71 70 72
+ 25 1 74 73 75
+ 26 1 77 76 78
+ 27 1 80 79 81
+ 28 1 83 82 84
+ 29 1 86 85 87
+ 30 1 89 88 90
+ 31 1 92 91 93
+ 32 1 95 94 96
+ 33 1 98 97 99
+ 34 1 101 100 102
+ 35 1 104 103 105
+ 36 1 107 106 108
+ 37 1 110 109 111
+ 38 1 113 112 114
+ 39 1 116 115 117
+ 40 1 119 118 120
+ 41 1 122 121 123
+ 42 1 125 124 126
+ 43 1 128 127 129
+ 44 1 131 130 132
+ 45 1 134 133 135
+ 46 1 137 136 138
+ 47 1 140 139 141
+ 48 1 143 142 144
+ 49 1 146 145 147
+ 50 1 149 148 150
+ 51 1 152 151 153
+ 52 1 155 154 156
+ 53 1 158 157 159
+ 54 1 161 160 162
+ 55 1 164 163 165
+ 56 1 167 166 168
+ 57 1 170 169 171
+ 58 1 173 172 174
+ 59 1 176 175 177
+ 60 1 179 178 180
+ 61 1 182 181 183
+ 62 1 185 184 186
+ 63 1 188 187 189
+ 64 1 191 190 192
+ 65 1 194 193 195
+ 66 1 197 196 198
+ 67 1 200 199 201
+ 68 1 203 202 204
+ 69 1 206 205 207
+ 70 1 209 208 210
+ 71 1 212 211 213
+ 72 1 215 214 216
+ 73 1 218 217 219
+ 74 1 221 220 222
+ 75 1 224 223 225
+ 76 1 227 226 228
+ 77 1 230 229 231
+ 78 1 233 232 234
+ 79 1 236 235 237
+ 80 1 239 238 240
+ 81 1 242 241 243
+ 82 1 245 244 246
+ 83 1 248 247 249
+ 84 1 251 250 252
+ 85 1 254 253 255
+ 86 1 257 256 258
+ 87 1 260 259 261
+ 88 1 263 262 264
+ 89 1 266 265 267
+ 90 1 269 268 270
+ 91 1 272 271 273
+ 92 1 275 274 276
+ 93 1 278 277 279
+ 94 1 281 280 282
+ 95 1 284 283 285
+ 96 1 287 286 288
+ 97 1 290 289 291
+ 98 1 293 292 294
+ 99 1 296 295 297
+ 100 1 299 298 300
+ 101 1 302 301 303
+ 102 1 305 304 306
+ 103 1 308 307 309
+ 104 1 311 310 312
+ 105 1 314 313 315
+ 106 1 317 316 318
+ 107 1 320 319 321
+ 108 1 323 322 324
+ 109 1 326 325 327
+ 110 1 329 328 330
+ 111 1 332 331 333
+ 112 1 335 334 336
+ 113 1 338 337 339
+ 114 1 341 340 342
+ 115 1 344 343 345
+ 116 1 347 346 348
+ 117 1 350 349 351
+ 118 1 353 352 354
+ 119 1 356 355 357
+ 120 1 359 358 360
+ 121 1 362 361 363
+ 122 1 365 364 366
+ 123 1 368 367 369
+ 124 1 371 370 372
+ 125 1 374 373 375
+ 126 1 377 376 378
+ 127 1 380 379 381
+ 128 1 383 382 384
+ 129 1 386 385 387
+ 130 1 389 388 390
+ 131 1 392 391 393
+ 132 1 395 394 396
+ 133 1 398 397 399
+ 134 1 401 400 402
+ 135 1 404 403 405
+ 136 1 407 406 408
+ 137 1 410 409 411
+ 138 1 413 412 414
+ 139 1 416 415 417
+ 140 1 419 418 420
+ 141 1 422 421 423
+ 142 1 425 424 426
+ 143 1 428 427 429
+ 144 1 431 430 432
+ 145 1 434 433 435
+ 146 1 437 436 438
+ 147 1 440 439 441
+ 148 1 443 442 444
+ 149 1 446 445 447
+ 150 1 449 448 450
+ 151 1 452 451 453
+ 152 1 455 454 456
+ 153 1 458 457 459
+ 154 1 461 460 462
+ 155 1 464 463 465
+ 156 1 467 466 468
+ 157 1 470 469 471
+ 158 1 473 472 474
+ 159 1 476 475 477
+ 160 1 479 478 480
+ 161 1 482 481 483
+ 162 1 485 484 486
+ 163 1 488 487 489
+ 164 1 491 490 492
+ 165 1 494 493 495
+ 166 1 497 496 498
+ 167 1 500 499 501
+ 168 1 503 502 504
+ 169 1 506 505 507
+ 170 1 509 508 510
+ 171 1 512 511 513
+ 172 1 515 514 516
+ 173 1 518 517 519
+ 174 1 521 520 522
+ 175 1 524 523 525
+ 176 1 527 526 528
+ 177 1 530 529 531
+ 178 1 533 532 534
+ 179 1 536 535 537
+ 180 1 539 538 540
+ 181 1 542 541 543
+ 182 1 545 544 546
+ 183 1 548 547 549
+ 184 1 551 550 552
+ 185 1 554 553 555
+ 186 1 557 556 558
+ 187 1 560 559 561
+ 188 1 563 562 564
+ 189 1 566 565 567
+ 190 1 569 568 570
+ 191 1 572 571 573
+ 192 1 575 574 576
+ 193 1 578 577 579
+ 194 1 581 580 582
+ 195 1 584 583 585
+ 196 1 587 586 588
+ 197 1 590 589 591
+ 198 1 593 592 594
+ 199 1 596 595 597
+ 200 1 599 598 600
+ 201 1 602 601 603
+ 202 1 605 604 606
+ 203 1 608 607 609
+ 204 1 611 610 612
+ 205 1 614 613 615
+ 206 1 617 616 618
+ 207 1 620 619 621
+ 208 1 623 622 624
+ 209 1 626 625 627
+ 210 1 629 628 630
+ 211 1 632 631 633
+ 212 1 635 634 636
+ 213 1 638 637 639
+ 214 1 641 640 642
+ 215 1 644 643 645
+ 216 1 647 646 648
diff --git a/tools/i-pi/examples/lammps/h2o-piglet.4/in.water b/tools/i-pi/examples/lammps/h2o-piglet.4/in.water
new file mode 100644
index 0000000000000000000000000000000000000000..c43fe7c15c199e261ada7bf58b955831a88cf67e
--- /dev/null
+++ b/tools/i-pi/examples/lammps/h2o-piglet.4/in.water
@@ -0,0 +1,32 @@
+units		electron
+atom_style	full
+
+#pair_style	lj/cut/coul/long 17.01
+pair_style      lj/cut/tip4p/long 1 2 1 1 0.278072379 17.007
+#bond_style      harmonic
+bond_style      class2 
+angle_style     harmonic
+#kspace_style	pppm 0.0001
+kspace_style	pppm/tip4p 0.0001
+
+read_data	data.water
+pair_coeff  * * 0 0
+pair_coeff  1  1  0.000295147 5.96946
+
+neighbor	2.0 bin
+
+timestep	0.00025
+
+#velocity all create 298.0 2345187
+
+#thermo_style	multi
+#thermo		1
+
+#fix		1 all nvt temp 298.0 298.0 30.0 tchain 1
+#fix 1 all nve
+fix 1 all ipi piglet_4 32343 unix
+
+#dump		1 all xyz 25 dump.xyz
+
+run		100000000
+
diff --git a/tools/i-pi/examples/lammps/h2o-piglet.4/input.xml b/tools/i-pi/examples/lammps/h2o-piglet.4/input.xml
new file mode 100644
index 0000000000000000000000000000000000000000..af3b01a1d3e83e4128e0c69b6184502783e793d1
--- /dev/null
+++ b/tools/i-pi/examples/lammps/h2o-piglet.4/input.xml
@@ -0,0 +1,40 @@
+<simulation>
+   <initialize nbeads='4'> 
+      <file mode='pdb'> water_298K.pdb </file>
+      <velocities mode="thermal" units='kelvin'> 298 </velocities>
+   </initialize>
+   <output prefix='gle_lammps'>
+      <properties stride='1' filename='out'>  [ step, time{picosecond}, conserved{kelvin}, temperature{kelvin}, kinetic_cv{kelvin}, potential{kelvin}, pressure_cv{megapascal}] </properties>
+      <trajectory filename='pos' stride='20'> positions </trajectory>
+   </output>
+   <total_steps>500000</total_steps>
+   <prng><seed>32343</seed></prng>
+   <forces>
+      <socket mode='unix'>
+         <address>piglet_4</address>
+      </socket>
+   </forces>
+   <ensemble mode='nvt'>
+  <thermostat mode='nm_gle'>
+    <A shape='(4,9,9)'>
+[
+   1.300513766690e-2,     9.078220950722e-6,     8.180522706851e-6,     1.196620464216e-5,     1.108609196233e-4,    -8.941338246404e-4,     7.817382329484e-3,    -1.206049888192e-2,    -5.215913547478e-2,    -9.756343549369e-6,     2.131200614277e-7,     2.972243541454e-6,    -4.459298032276e-6,     2.177011229810e-7,     4.960251269751e-7,    -2.083064995647e-6,    -7.004617074013e-6,     2.299410255689e-5,    -1.851243089560e-6,    -2.972243541454e-6,     1.956991859501e-6,     1.742357040415e-6,    -2.082265548357e-6,    -1.760771137012e-6,    -3.733162998255e-6,    -3.711884630223e-5,    -3.625483838477e-5,     1.492481502899e-5,     4.459298032276e-6,    -1.742357040415e-6,     5.092476869103e-6,     2.033910859306e-6,     5.856365217540e-7,    -3.020170664006e-6,     1.868034354962e-5,    -5.049113665348e-6,     1.059383195368e-4,    -2.177011229810e-7,     2.082265548357e-6,    -2.033910859306e-6,     5.467813757620e-5,    -6.684243951800e-6,    -9.770331146786e-7,    -2.159991642805e-4,     4.667176340213e-4,    -7.611448585233e-4,    -4.960251269751e-7,     1.760771137012e-6,    -5.856365217540e-7,     6.684243951800e-6,     6.616597356640e-4,    -1.637891086976e-6,    -2.056652206438e-4,     2.960975881160e-4,     7.659946833472e-3,     2.083064995647e-6,     3.733162998255e-6,     3.020170664006e-6,     9.770331146786e-7,     1.637891086976e-6,     6.390977118535e-3,    -6.246090363901e-5,     5.054994461623e-4,    -1.078245092236e-2,     7.004617074013e-6,     3.711884630223e-5,    -1.868034354962e-5,     2.159991642805e-4,     2.056652206438e-4,     6.246090363901e-5,     1.730397061203e-1,     1.004651317366e-4,    -5.467410217589e-2,    -2.299410255689e-5,     3.625483838477e-5,     5.049113665348e-6,    -4.667176340213e-4,    -2.960975881160e-4,    -5.054994461623e-4,    -1.004651317366e-4,     1.795223909984e+0,  
+   7.566936336534e-6,     6.338019063098e-3,     0.000000000000e+0,     1.060374810427e-2,     0.000000000000e+0,     4.208955410918e-3,     0.000000000000e+0,     8.082827448553e-5,     0.000000000000e+0,    -6.338019063098e-3,     7.358306814484e-2,     2.945862869452e-2,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -2.945862869452e-2,    1.924557597624e-14,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -1.060374810427e-2,     0.000000000000e+0,     0.000000000000e+0,     1.487651276141e-2,     5.463360757376e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -5.463360757376e-3,    1.924557597624e-14,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -4.208955410918e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     4.130761028108e-2,     1.462832567462e-2,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -1.462832567462e-2,    1.924557597624e-14,     0.000000000000e+0,     0.000000000000e+0,    -8.082827448553e-5,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     3.105282519359e-3,     1.090072581774e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -1.090072581774e-3,    1.924557597624e-14,  
+   7.566936336534e-6,     6.338019063098e-3,     0.000000000000e+0,     1.060374810427e-2,     0.000000000000e+0,     4.208955410918e-3,     0.000000000000e+0,     8.082827448553e-5,     0.000000000000e+0,    -6.338019063098e-3,     7.358306814484e-2,     2.945862869452e-2,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -2.945862869452e-2,    1.924557597624e-14,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -1.060374810427e-2,     0.000000000000e+0,     0.000000000000e+0,     1.487651276141e-2,     5.463360757376e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -5.463360757376e-3,    1.924557597624e-14,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -4.208955410918e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     4.130761028108e-2,     1.462832567462e-2,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -1.462832567462e-2,    1.924557597624e-14,     0.000000000000e+0,     0.000000000000e+0,    -8.082827448553e-5,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     3.105282519359e-3,     1.090072581774e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -1.090072581774e-3,    1.924557597624e-14,  
+   7.566936336534e-6,     6.338019063098e-3,     0.000000000000e+0,     1.060374810427e-2,     0.000000000000e+0,     4.208955410918e-3,     0.000000000000e+0,     8.082827448553e-5,     0.000000000000e+0,    -6.338019063098e-3,     7.358306814484e-2,     2.945862869452e-2,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -2.945862869452e-2,    1.924557597624e-14,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -1.060374810427e-2,     0.000000000000e+0,     0.000000000000e+0,     1.487651276141e-2,     5.463360757376e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -5.463360757376e-3,    1.924557597624e-14,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -4.208955410918e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     4.130761028108e-2,     1.462832567462e-2,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -1.462832567462e-2,    1.924557597624e-14,     0.000000000000e+0,     0.000000000000e+0,    -8.082827448553e-5,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     3.105282519359e-3,     1.090072581774e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -1.090072581774e-3,    1.924557597624e-14
+]
+    </A>
+    <C shape='(4,9,9)' units='kelvin'>
+[
+     1.192000000000e+3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     1.192000000000e+3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     1.192000000000e+3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     1.192000000000e+3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     1.192000000000e+3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     1.192000000000e+3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     1.192000000000e+3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     1.192000000000e+3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     1.192000000000e+3,
+     1.974745232194e+3,    -2.047141324480e+2,    -1.465776544626e+3,     5.611692742600e+2,     2.600211572322e+2,    -1.099491161786e+3,    -3.093580205740e+3,    -3.861032202200e+2,    -1.067404178368e+3,    -2.047141324480e+2,     1.087575551624e+4,     6.721323835060e-9,     2.021884782970e+2,     1.075739781622e+2,    -7.437996121940e+1,    -1.600458223938e+1,    -1.059816853114e+1,     2.076593606756e+0,    -1.465776544626e+3,     6.719263290220e-9,     1.056039393790e+4,    -5.800425818660e+2,    -1.752619163876e+2,     3.223014416760e+1,    -6.625413068480e+2,    -5.611883191420e+1,    -2.352310083702e+2,     5.611692742600e+2,     2.021884782970e+2,    -5.800425818660e+2,     8.662918193440e+2,     3.799597913860e-9,     1.716248402446e+2,    -1.504572868414e+3,    -2.864411056124e+2,    -4.191189710000e+1,     2.600211572322e+2,     1.075739781622e+2,    -1.752619163876e+2,     3.799720946140e-9,     1.370962657638e+3,     5.619251682460e+2,    -1.447856743746e+3,     2.100592360296e+2,    -2.014734930954e+3,    -1.099491161786e+3,    -7.437996121940e+1,     3.223014416760e+1,     1.716248402446e+2,     5.619251682460e+2,     2.319917706904e+4,     2.896113582292e-8,    -1.931536922152e+1,     4.385447956380e+0,    -3.093580205740e+3,    -1.600458223938e+1,    -6.625413068480e+2,    -1.504572868414e+3,    -1.447856743746e+3,     2.896343709812e-8,     2.230907239094e+4,    -5.885090774480e+1,    -3.209433686600e+2,    -3.861032202200e+2,    -1.059816853114e+1,    -5.611883191420e+1,    -2.864411056124e+2,     2.100592360296e+2,    -1.931536922152e+1,    -5.885090774480e+1,     7.065427000840e+4,     1.240853151798e-6,    -1.067404178368e+3,     2.076593606756e+0,    -2.352310083702e+2,    -4.191189710000e+1,    -2.014734930954e+3,     4.385447956380e+0,    -3.209433686600e+2,     1.240861621554e-6,     7.057512257920e+4,
+     1.974745232194e+3,    -2.047141324480e+2,    -1.465776544626e+3,     5.611692742600e+2,     2.600211572322e+2,    -1.099491161786e+3,    -3.093580205740e+3,    -3.861032202200e+2,    -1.067404178368e+3,    -2.047141324480e+2,     1.087575551624e+4,     6.721323835060e-9,     2.021884782970e+2,     1.075739781622e+2,    -7.437996121940e+1,    -1.600458223938e+1,    -1.059816853114e+1,     2.076593606756e+0,    -1.465776544626e+3,     6.719263290220e-9,     1.056039393790e+4,    -5.800425818660e+2,    -1.752619163876e+2,     3.223014416760e+1,    -6.625413068480e+2,    -5.611883191420e+1,    -2.352310083702e+2,     5.611692742600e+2,     2.021884782970e+2,    -5.800425818660e+2,     8.662918193440e+2,     3.799597913860e-9,     1.716248402446e+2,    -1.504572868414e+3,    -2.864411056124e+2,    -4.191189710000e+1,     2.600211572322e+2,     1.075739781622e+2,    -1.752619163876e+2,     3.799720946140e-9,     1.370962657638e+3,     5.619251682460e+2,    -1.447856743746e+3,     2.100592360296e+2,    -2.014734930954e+3,    -1.099491161786e+3,    -7.437996121940e+1,     3.223014416760e+1,     1.716248402446e+2,     5.619251682460e+2,     2.319917706904e+4,     2.896113582292e-8,    -1.931536922152e+1,     4.385447956380e+0,    -3.093580205740e+3,    -1.600458223938e+1,    -6.625413068480e+2,    -1.504572868414e+3,    -1.447856743746e+3,     2.896343709812e-8,     2.230907239094e+4,    -5.885090774480e+1,    -3.209433686600e+2,    -3.861032202200e+2,    -1.059816853114e+1,    -5.611883191420e+1,    -2.864411056124e+2,     2.100592360296e+2,    -1.931536922152e+1,    -5.885090774480e+1,     7.065427000840e+4,     1.240853151798e-6,    -1.067404178368e+3,     2.076593606756e+0,    -2.352310083702e+2,    -4.191189710000e+1,    -2.014734930954e+3,     4.385447956380e+0,    -3.209433686600e+2,     1.240861621554e-6,     7.057512257920e+4,
+     1.974745232194e+3,    -2.047141324480e+2,    -1.465776544626e+3,     5.611692742600e+2,     2.600211572322e+2,    -1.099491161786e+3,    -3.093580205740e+3,    -3.861032202200e+2,    -1.067404178368e+3,    -2.047141324480e+2,     1.087575551624e+4,     6.721323835060e-9,     2.021884782970e+2,     1.075739781622e+2,    -7.437996121940e+1,    -1.600458223938e+1,    -1.059816853114e+1,     2.076593606756e+0,    -1.465776544626e+3,     6.719263290220e-9,     1.056039393790e+4,    -5.800425818660e+2,    -1.752619163876e+2,     3.223014416760e+1,    -6.625413068480e+2,    -5.611883191420e+1,    -2.352310083702e+2,     5.611692742600e+2,     2.021884782970e+2,    -5.800425818660e+2,     8.662918193440e+2,     3.799597913860e-9,     1.716248402446e+2,    -1.504572868414e+3,    -2.864411056124e+2,    -4.191189710000e+1,     2.600211572322e+2,     1.075739781622e+2,    -1.752619163876e+2,     3.799720946140e-9,     1.370962657638e+3,     5.619251682460e+2,    -1.447856743746e+3,     2.100592360296e+2,    -2.014734930954e+3,    -1.099491161786e+3,    -7.437996121940e+1,     3.223014416760e+1,     1.716248402446e+2,     5.619251682460e+2,     2.319917706904e+4,     2.896113582292e-8,    -1.931536922152e+1,     4.385447956380e+0,    -3.093580205740e+3,    -1.600458223938e+1,    -6.625413068480e+2,    -1.504572868414e+3,    -1.447856743746e+3,     2.896343709812e-8,     2.230907239094e+4,    -5.885090774480e+1,    -3.209433686600e+2,    -3.861032202200e+2,    -1.059816853114e+1,    -5.611883191420e+1,    -2.864411056124e+2,     2.100592360296e+2,    -1.931536922152e+1,    -5.885090774480e+1,     7.065427000840e+4,     1.240853151798e-6,    -1.067404178368e+3,     2.076593606756e+0,    -2.352310083702e+2,    -4.191189710000e+1,    -2.014734930954e+3,     4.385447956380e+0,    -3.209433686600e+2,     1.240861621554e-6,     7.057512257920e+4
+]
+    </C>
+  </thermostat>
+
+      <timestep units='femtosecond'> 0.1</timestep>
+      <temperature units='kelvin'>298</temperature>
+   </ensemble>
+</simulation>
diff --git a/tools/i-pi/examples/lammps/h2o-piglet.4/water_298K.pdb b/tools/i-pi/examples/lammps/h2o-piglet.4/water_298K.pdb
new file mode 100644
index 0000000000000000000000000000000000000000..e8509c868e9f7ece5e82b1ee19d58a269f5db829
--- /dev/null
+++ b/tools/i-pi/examples/lammps/h2o-piglet.4/water_298K.pdb
@@ -0,0 +1,650 @@
+CRYST   35.233   35.233   35.233  90.00  90.00  90.00 P 1          1
+ATOM      1    O   1     1       3.846   5.672   1.323  0.00  0.00            0
+ATOM      2    H   1     1       2.979   7.054   0.857  0.00  0.00            0
+ATOM      3    H   1     1       5.525   5.697   0.451  0.00  0.00            0
+ATOM      4    O   1     1      34.557  34.341   3.078  0.00  0.00            0
+ATOM      5    H   1     1      33.722  34.689   4.840  0.00  0.00            0
+ATOM      6    H   1     1      36.029  33.220   3.711  0.00  0.00            0
+ATOM      7    O   1     1       5.591   1.963  13.477  0.00  0.00            0
+ATOM      8    H   1     1       7.265   1.864  13.851  0.00  0.00            0
+ATOM      9    H   1     1       5.009   3.555  13.916  0.00  0.00            0
+ATOM     10    O   1     1       1.060   2.061  21.718  0.00  0.00            0
+ATOM     11    H   1     1       0.757   0.261  21.820  0.00  0.00            0
+ATOM     12    H   1     1       0.213   3.013  23.047  0.00  0.00            0
+ATOM     13    O   1     1       1.200   1.337  29.006  0.00  0.00            0
+ATOM     14    H   1     1       0.818   1.884  30.732  0.00  0.00            0
+ATOM     15    H   1     1       2.883   1.825  29.011  0.00  0.00            0
+ATOM     16    O   1     1       1.331   1.386  34.306  0.00  0.00            0
+ATOM     17    H   1     1       2.392   2.898  34.846  0.00  0.00            0
+ATOM     18    H   1     1       0.814   0.532  35.836  0.00  0.00            0
+ATOM     19    O   1     1      31.451  10.201   0.726  0.00  0.00            0
+ATOM     20    H   1     1      32.282  10.877  -0.750  0.00  0.00            0
+ATOM     21    H   1     1      30.920  11.594   1.677  0.00  0.00            0
+ATOM     22    O   1     1       0.836  10.808   4.298  0.00  0.00            0
+ATOM     23    H   1     1       0.305  10.643   2.793  0.00  0.00            0
+ATOM     24    H   1     1      -0.356  10.334   5.524  0.00  0.00            0
+ATOM     25    O   1     1      34.381   5.979   9.194  0.00  0.00            0
+ATOM     26    H   1     1      33.616   7.673   8.857  0.00  0.00            0
+ATOM     27    H   1     1      35.115   5.260   7.618  0.00  0.00            0
+ATOM     28    O   1     1      33.212   6.480  24.278  0.00  0.00            0
+ATOM     29    H   1     1      31.624   6.908  23.521  0.00  0.00            0
+ATOM     30    H   1     1      32.544   4.990  24.982  0.00  0.00            0
+ATOM     31    O   1     1       1.992   9.002  26.863  0.00  0.00            0
+ATOM     32    H   1     1       1.856  10.175  25.579  0.00  0.00            0
+ATOM     33    H   1     1       0.519   8.099  26.386  0.00  0.00            0
+ATOM     34    O   1     1       2.054   8.660  32.515  0.00  0.00            0
+ATOM     35    H   1     1       2.167   8.727  30.494  0.00  0.00            0
+ATOM     36    H   1     1       2.374  10.513  33.038  0.00  0.00            0
+ATOM     37    O   1     1       3.402  16.639   3.008  0.00  0.00            0
+ATOM     38    H   1     1       4.127  15.872   4.446  0.00  0.00            0
+ATOM     39    H   1     1       2.905  18.339   3.160  0.00  0.00            0
+ATOM     40    O   1     1       4.222  15.444   8.072  0.00  0.00            0
+ATOM     41    H   1     1       5.211  16.756   8.299  0.00  0.00            0
+ATOM     42    H   1     1       2.560  15.492   8.860  0.00  0.00            0
+ATOM     43    O   1     1       2.831   9.246  16.488  0.00  0.00            0
+ATOM     44    H   1     1       2.869   8.023  18.050  0.00  0.00            0
+ATOM     45    H   1     1       3.960   8.467  15.154  0.00  0.00            0
+ATOM     46    O   1     1       5.563   6.003  20.907  0.00  0.00            0
+ATOM     47    H   1     1       4.653   4.638  21.480  0.00  0.00            0
+ATOM     48    H   1     1       6.405   6.208  22.529  0.00  0.00            0
+ATOM     49    O   1     1       2.087  13.370  22.913  0.00  0.00            0
+ATOM     50    H   1     1       2.832  14.804  23.422  0.00  0.00            0
+ATOM     51    H   1     1       1.434  13.509  21.196  0.00  0.00            0
+ATOM     52    O   1     1       3.369  17.886  25.109  0.00  0.00            0
+ATOM     53    H   1     1       3.655  17.200  26.766  0.00  0.00            0
+ATOM     54    H   1     1       4.772  18.977  24.500  0.00  0.00            0
+ATOM     55    O   1     1      34.764  20.803   0.948  0.00  0.00            0
+ATOM     56    H   1     1      35.210  21.267   2.816  0.00  0.00            0
+ATOM     57    H   1     1      35.962  21.726   0.131  0.00  0.00            0
+ATOM     58    O   1     1       2.836  24.178  15.229  0.00  0.00            0
+ATOM     59    H   1     1       2.795  22.346  14.876  0.00  0.00            0
+ATOM     60    H   1     1       2.414  24.115  17.130  0.00  0.00            0
+ATOM     61    O   1     1      33.000  24.481  15.230  0.00  0.00            0
+ATOM     62    H   1     1      34.640  24.804  15.013  0.00  0.00            0
+ATOM     63    H   1     1      32.401  25.764  14.295  0.00  0.00            0
+ATOM     64    O   1     1       0.404  26.779  23.400  0.00  0.00            0
+ATOM     65    H   1     1       1.353  27.248  24.987  0.00  0.00            0
+ATOM     66    H   1     1       1.546  28.050  22.317  0.00  0.00            0
+ATOM     67    O   1     1      34.222  21.380  25.418  0.00  0.00            0
+ATOM     68    H   1     1      35.669  20.151  25.317  0.00  0.00            0
+ATOM     69    H   1     1      32.960  21.180  23.992  0.00  0.00            0
+ATOM     70    O   1     1      33.259  17.438  32.480  0.00  0.00            0
+ATOM     71    H   1     1      33.314  18.782  33.883  0.00  0.00            0
+ATOM     72    H   1     1      32.743  18.181  30.871  0.00  0.00            0
+ATOM     73    O   1     1       4.463  21.979   3.936  0.00  0.00            0
+ATOM     74    H   1     1       5.856  23.084   3.400  0.00  0.00            0
+ATOM     75    H   1     1       3.986  22.180   5.602  0.00  0.00            0
+ATOM     76    O   1     1       6.258  25.851   8.520  0.00  0.00            0
+ATOM     77    H   1     1       5.767  27.693   8.476  0.00  0.00            0
+ATOM     78    H   1     1       7.202  25.506  10.186  0.00  0.00            0
+ATOM     79    O   1     1       0.601  29.737  12.747  0.00  0.00            0
+ATOM     80    H   1     1      -0.685  30.842  12.350  0.00  0.00            0
+ATOM     81    H   1     1       1.336  30.716  14.031  0.00  0.00            0
+ATOM     82    O   1     1       7.563  28.191  24.333  0.00  0.00            0
+ATOM     83    H   1     1       9.201  28.828  24.684  0.00  0.00            0
+ATOM     84    H   1     1       7.381  27.621  22.799  0.00  0.00            0
+ATOM     85    O   1     1       3.653  27.109  27.772  0.00  0.00            0
+ATOM     86    H   1     1       5.126  27.015  26.772  0.00  0.00            0
+ATOM     87    H   1     1       3.031  28.756  27.698  0.00  0.00            0
+ATOM     88    O   1     1       2.596  23.991  32.476  0.00  0.00            0
+ATOM     89    H   1     1       2.879  24.791  30.859  0.00  0.00            0
+ATOM     90    H   1     1       4.003  22.913  32.701  0.00  0.00            0
+ATOM     91    O   1     1       3.083  31.317   3.644  0.00  0.00            0
+ATOM     92    H   1     1       4.133  30.589   2.539  0.00  0.00            0
+ATOM     93    H   1     1       4.218  32.173   5.037  0.00  0.00            0
+ATOM     94    O   1     1       4.661  30.555   9.368  0.00  0.00            0
+ATOM     95    H   1     1       3.184  29.843  10.132  0.00  0.00            0
+ATOM     96    H   1     1       4.358  32.448   9.126  0.00  0.00            0
+ATOM     97    O   1     1       3.465  32.537  15.778  0.00  0.00            0
+ATOM     98    H   1     1       5.072  31.819  15.903  0.00  0.00            0
+ATOM     99    H   1     1       4.055  34.257  15.284  0.00  0.00            0
+ATOM    100    O   1     1       4.215  29.153  20.317  0.00  0.00            0
+ATOM    101    H   1     1       3.658  30.176  18.842  0.00  0.00            0
+ATOM    102    H   1     1       4.959  30.291  21.449  0.00  0.00            0
+ATOM    103    O   1     1       1.126  31.333  28.768  0.00  0.00            0
+ATOM    104    H   1     1       2.395  31.124  29.925  0.00  0.00            0
+ATOM    105    H   1     1       0.768  33.092  28.898  0.00  0.00            0
+ATOM    106    O   1     1       4.881  32.616  32.302  0.00  0.00            0
+ATOM    107    H   1     1       6.588  32.911  31.725  0.00  0.00            0
+ATOM    108    H   1     1       4.486  34.037  33.249  0.00  0.00            0
+ATOM    109    O   1     1       8.962   5.556   0.151  0.00  0.00            0
+ATOM    110    H   1     1       9.652   6.991   0.859  0.00  0.00            0
+ATOM    111    H   1     1       9.173   4.477   1.645  0.00  0.00            0
+ATOM    112    O   1     1       1.833   3.518   5.679  0.00  0.00            0
+ATOM    113    H   1     1       2.889   2.731   6.788  0.00  0.00            0
+ATOM    114    H   1     1       2.789   4.187   4.147  0.00  0.00            0
+ATOM    115    O   1     1      10.510  34.726  13.073  0.00  0.00            0
+ATOM    116    H   1     1      11.920  34.118  11.919  0.00  0.00            0
+ATOM    117    H   1     1      11.295  34.968  14.741  0.00  0.00            0
+ATOM    118    O   1     1       7.212   0.042  22.454  0.00  0.00            0
+ATOM    119    H   1     1       6.924   0.470  24.172  0.00  0.00            0
+ATOM    120    H   1     1       8.319   1.228  21.653  0.00  0.00            0
+ATOM    121    O   1     1       6.365   2.010  27.544  0.00  0.00            0
+ATOM    122    H   1     1       5.954   3.585  26.852  0.00  0.00            0
+ATOM    123    H   1     1       7.758   2.549  28.696  0.00  0.00            0
+ATOM    124    O   1     1      10.833   3.140  30.787  0.00  0.00            0
+ATOM    125    H   1     1      12.697   2.975  30.867  0.00  0.00            0
+ATOM    126    H   1     1      10.389   3.700  32.404  0.00  0.00            0
+ATOM    127    O   1     1       8.684   9.342   3.912  0.00  0.00            0
+ATOM    128    H   1     1       6.985   9.256   4.773  0.00  0.00            0
+ATOM    129    H   1     1       8.684  10.809   3.011  0.00  0.00            0
+ATOM    130    O   1     1       4.873   9.919   7.707  0.00  0.00            0
+ATOM    131    H   1     1       3.698   9.771   6.194  0.00  0.00            0
+ATOM    132    H   1     1       5.047  11.961   7.624  0.00  0.00            0
+ATOM    133    O   1     1      10.031   5.018   9.699  0.00  0.00            0
+ATOM    134    H   1     1       9.675   3.382  10.340  0.00  0.00            0
+ATOM    135    H   1     1       9.132   5.987  10.825  0.00  0.00            0
+ATOM    136    O   1     1      11.246   3.918  21.929  0.00  0.00            0
+ATOM    137    H   1     1      12.614   2.770  22.341  0.00  0.00            0
+ATOM    138    H   1     1      12.073   5.686  21.497  0.00  0.00            0
+ATOM    139    O   1     1       6.825   7.164  25.708  0.00  0.00            0
+ATOM    140    H   1     1       8.036   8.374  25.980  0.00  0.00            0
+ATOM    141    H   1     1       5.206   7.900  25.891  0.00  0.00            0
+ATOM    142    O   1     1      10.171  12.811   0.295  0.00  0.00            0
+ATOM    143    H   1     1      10.033  12.818  -1.609  0.00  0.00            0
+ATOM    144    H   1     1       9.880  14.492   0.480  0.00  0.00            0
+ATOM    145    O   1     1       8.190  17.402   1.253  0.00  0.00            0
+ATOM    146    H   1     1       9.472  18.531   1.253  0.00  0.00            0
+ATOM    147    H   1     1       6.351  17.817   1.568  0.00  0.00            0
+ATOM    148    O   1     1      11.233  16.188   8.299  0.00  0.00            0
+ATOM    149    H   1     1      10.291  17.689   8.166  0.00  0.00            0
+ATOM    150    H   1     1      12.768  17.123   8.733  0.00  0.00            0
+ATOM    151    O   1     1       6.386   8.002  12.846  0.00  0.00            0
+ATOM    152    H   1     1       7.701   8.896  13.655  0.00  0.00            0
+ATOM    153    H   1     1       5.591   8.877  11.519  0.00  0.00            0
+ATOM    154    O   1     1       8.184  10.419  18.848  0.00  0.00            0
+ATOM    155    H   1     1       9.498   9.434  19.905  0.00  0.00            0
+ATOM    156    H   1     1       6.882   9.027  18.948  0.00  0.00            0
+ATOM    157    O   1     1      10.806  14.431  21.328  0.00  0.00            0
+ATOM    158    H   1     1       9.177  13.531  20.670  0.00  0.00            0
+ATOM    159    H   1     1      11.344  15.696  20.448  0.00  0.00            0
+ATOM    160    O   1     1       9.237  13.928  30.341  0.00  0.00            0
+ATOM    161    H   1     1      10.779  14.839  30.522  0.00  0.00            0
+ATOM    162    H   1     1       9.965  13.192  28.899  0.00  0.00            0
+ATOM    163    O   1     1      10.918  21.707   1.864  0.00  0.00            0
+ATOM    164    H   1     1      10.280  23.449   2.279  0.00  0.00            0
+ATOM    165    H   1     1      12.708  21.456   1.749  0.00  0.00            0
+ATOM    166    O   1     1       9.353  16.125  13.927  0.00  0.00            0
+ATOM    167    H   1     1       9.938  17.594  14.618  0.00  0.00            0
+ATOM    168    H   1     1       9.518  16.360  12.244  0.00  0.00            0
+ATOM    169    O   1     1      10.371  11.107  14.268  0.00  0.00            0
+ATOM    170    H   1     1       9.644  10.406  15.859  0.00  0.00            0
+ATOM    171    H   1     1       9.434  12.523  14.117  0.00  0.00            0
+ATOM    172    O   1     1       3.351  22.769  20.196  0.00  0.00            0
+ATOM    173    H   1     1       2.055  23.686  21.503  0.00  0.00            0
+ATOM    174    H   1     1       2.452  21.401  19.413  0.00  0.00            0
+ATOM    175    O   1     1       6.836  21.329  23.199  0.00  0.00            0
+ATOM    176    H   1     1       8.249  20.848  22.320  0.00  0.00            0
+ATOM    177    H   1     1       5.668  21.841  21.886  0.00  0.00            0
+ATOM    178    O   1     1       4.604  15.649  30.043  0.00  0.00            0
+ATOM    179    H   1     1       6.453  15.217  30.207  0.00  0.00            0
+ATOM    180    H   1     1       3.822  14.762  31.562  0.00  0.00            0
+ATOM    181    O   1     1       7.125  19.976   9.421  0.00  0.00            0
+ATOM    182    H   1     1       5.918  20.453  10.730  0.00  0.00            0
+ATOM    183    H   1     1       8.099  21.496   9.491  0.00  0.00            0
+ATOM    184    O   1     1       9.063  25.912  13.186  0.00  0.00            0
+ATOM    185    H   1     1      10.350  26.572  12.367  0.00  0.00            0
+ATOM    186    H   1     1       9.680  24.367  13.697  0.00  0.00            0
+ATOM    187    O   1     1       8.022  22.343  17.042  0.00  0.00            0
+ATOM    188    H   1     1       9.144  23.367  18.074  0.00  0.00            0
+ATOM    189    H   1     1       6.562  23.462  16.852  0.00  0.00            0
+ATOM    190    O   1     1      10.762  26.285  19.963  0.00  0.00            0
+ATOM    191    H   1     1      11.036  27.966  20.538  0.00  0.00            0
+ATOM    192    H   1     1      11.078  25.401  21.456  0.00  0.00            0
+ATOM    193    O   1     1       9.158  22.902  28.391  0.00  0.00            0
+ATOM    194    H   1     1       8.219  23.528  27.085  0.00  0.00            0
+ATOM    195    H   1     1       8.089  21.760  29.509  0.00  0.00            0
+ATOM    196    O   1     1       6.219  20.158  31.921  0.00  0.00            0
+ATOM    197    H   1     1       5.635  18.511  31.161  0.00  0.00            0
+ATOM    198    H   1     1       7.530  19.624  33.071  0.00  0.00            0
+ATOM    199    O   1     1      11.191  31.509   2.617  0.00  0.00            0
+ATOM    200    H   1     1      10.460  32.214   4.108  0.00  0.00            0
+ATOM    201    H   1     1      13.176  31.751   2.577  0.00  0.00            0
+ATOM    202    O   1     1       4.748   0.055   8.605  0.00  0.00            0
+ATOM    203    H   1     1       5.380   0.517  10.183  0.00  0.00            0
+ATOM    204    H   1     1       6.050  -0.306   7.480  0.00  0.00            0
+ATOM    205    O   1     1       8.695  30.809  15.731  0.00  0.00            0
+ATOM    206    H   1     1       9.189  32.103  14.495  0.00  0.00            0
+ATOM    207    H   1     1       8.447  29.069  14.868  0.00  0.00            0
+ATOM    208    O   1     1      10.128  31.402  20.766  0.00  0.00            0
+ATOM    209    H   1     1       9.456  30.905  19.155  0.00  0.00            0
+ATOM    210    H   1     1       9.020  32.731  21.415  0.00  0.00            0
+ATOM    211    O   1     1      12.238  30.162  25.837  0.00  0.00            0
+ATOM    212    H   1     1      11.418  30.908  27.110  0.00  0.00            0
+ATOM    213    H   1     1      12.396  31.331  24.678  0.00  0.00            0
+ATOM    214    O   1     1      10.395  32.537  30.624  0.00  0.00            0
+ATOM    215    H   1     1      11.042  34.339  30.751  0.00  0.00            0
+ATOM    216    H   1     1      11.378  31.486  31.538  0.00  0.00            0
+ATOM    217    O   1     1      10.438   3.626   5.087  0.00  0.00            0
+ATOM    218    H   1     1      12.435   4.082   5.136  0.00  0.00            0
+ATOM    219    H   1     1       9.822   4.284   6.681  0.00  0.00            0
+ATOM    220    O   1     1      14.762   3.401  13.776  0.00  0.00            0
+ATOM    221    H   1     1      16.518   3.824  13.376  0.00  0.00            0
+ATOM    222    H   1     1      13.752   4.757  12.964  0.00  0.00            0
+ATOM    223    O   1     1      12.382   1.012  17.643  0.00  0.00            0
+ATOM    224    H   1     1      13.346   1.997  16.444  0.00  0.00            0
+ATOM    225    H   1     1      11.931   2.133  18.998  0.00  0.00            0
+ATOM    226    O   1     1      15.278   1.293  24.559  0.00  0.00            0
+ATOM    227    H   1     1      16.071   0.946  26.365  0.00  0.00            0
+ATOM    228    H   1     1      15.794   0.199  23.499  0.00  0.00            0
+ATOM    229    O   1     1      22.226  31.627  24.712  0.00  0.00            0
+ATOM    230    H   1     1      23.338  32.595  23.876  0.00  0.00            0
+ATOM    231    H   1     1      22.161  30.053  24.132  0.00  0.00            0
+ATOM    232    O   1     1      15.640   1.847  32.717  0.00  0.00            0
+ATOM    233    H   1     1      17.488   2.473  31.874  0.00  0.00            0
+ATOM    234    H   1     1      16.403   0.869  34.267  0.00  0.00            0
+ATOM    235    O   1     1      14.858  10.199   2.754  0.00  0.00            0
+ATOM    236    H   1     1      13.360  10.712   2.282  0.00  0.00            0
+ATOM    237    H   1     1      14.560   9.316   4.559  0.00  0.00            0
+ATOM    238    O   1     1      15.717   8.469  10.739  0.00  0.00            0
+ATOM    239    H   1     1      17.323   9.581  10.875  0.00  0.00            0
+ATOM    240    H   1     1      14.574   9.631  10.221  0.00  0.00            0
+ATOM    241    O   1     1      15.248  10.398  16.525  0.00  0.00            0
+ATOM    242    H   1     1      16.324   9.181  16.149  0.00  0.00            0
+ATOM    243    H   1     1      14.172  10.488  15.098  0.00  0.00            0
+ATOM    244    O   1     1      13.226   8.438  20.801  0.00  0.00            0
+ATOM    245    H   1     1      14.043   8.996  19.295  0.00  0.00            0
+ATOM    246    H   1     1      14.661   7.802  22.093  0.00  0.00            0
+ATOM    247    O   1     1      10.173  10.961  25.875  0.00  0.00            0
+ATOM    248    H   1     1      11.477  10.223  26.940  0.00  0.00            0
+ATOM    249    H   1     1      11.269  10.738  24.343  0.00  0.00            0
+ATOM    250    O   1     1      12.792   7.737  29.173  0.00  0.00            0
+ATOM    251    H   1     1      12.199   6.038  29.475  0.00  0.00            0
+ATOM    252    H   1     1      14.427   7.450  29.617  0.00  0.00            0
+ATOM    253    O   1     1      15.180  19.498   3.578  0.00  0.00            0
+ATOM    254    H   1     1      14.883  17.596   4.080  0.00  0.00            0
+ATOM    255    H   1     1      16.754  19.579   2.626  0.00  0.00            0
+ATOM    256    O   1     1      12.517  11.093   7.701  0.00  0.00            0
+ATOM    257    H   1     1      12.224  12.778   7.555  0.00  0.00            0
+ATOM    258    H   1     1      11.150  10.393   7.057  0.00  0.00            0
+ATOM    259    O   1     1      16.266  16.271  10.758  0.00  0.00            0
+ATOM    260    H   1     1      16.507  15.795  12.768  0.00  0.00            0
+ATOM    261    H   1     1      17.725  16.977  10.292  0.00  0.00            0
+ATOM    262    O   1     1      14.069  18.399  18.897  0.00  0.00            0
+ATOM    263    H   1     1      15.513  17.523  18.155  0.00  0.00            0
+ATOM    264    H   1     1      14.958  18.709  20.673  0.00  0.00            0
+ATOM    265    O   1     1      14.099  15.480  25.510  0.00  0.00            0
+ATOM    266    H   1     1      13.698  16.872  26.938  0.00  0.00            0
+ATOM    267    H   1     1      12.567  15.379  24.444  0.00  0.00            0
+ATOM    268    O   1     1      13.309  17.574  30.292  0.00  0.00            0
+ATOM    269    H   1     1      14.937  16.934  30.810  0.00  0.00            0
+ATOM    270    H   1     1      13.969  19.494  30.012  0.00  0.00            0
+ATOM    271    O   1     1      18.371  23.257   0.925  0.00  0.00            0
+ATOM    272    H   1     1      19.479  23.480   2.321  0.00  0.00            0
+ATOM    273    H   1     1      19.087  24.325  -0.369  0.00  0.00            0
+ATOM    274    O   1     1      12.100  21.730  11.355  0.00  0.00            0
+ATOM    275    H   1     1      13.141  22.287  12.743  0.00  0.00            0
+ATOM    276    H   1     1      13.467  22.236  10.244  0.00  0.00            0
+ATOM    277    O   1     1      12.163  23.290  23.597  0.00  0.00            0
+ATOM    278    H   1     1      11.324  22.736  24.949  0.00  0.00            0
+ATOM    279    H   1     1      13.882  22.872  23.840  0.00  0.00            0
+ATOM    280    O   1     1      20.173  26.761  22.628  0.00  0.00            0
+ATOM    281    H   1     1      20.206  26.532  20.792  0.00  0.00            0
+ATOM    282    H   1     1      21.556  25.742  23.389  0.00  0.00            0
+ATOM    283    O   1     1      16.701  21.165  22.605  0.00  0.00            0
+ATOM    284    H   1     1      18.028  20.686  23.848  0.00  0.00            0
+ATOM    285    H   1     1      17.104  22.866  21.949  0.00  0.00            0
+ATOM    286    O   1     1      11.391  26.461  33.705  0.00  0.00            0
+ATOM    287    H   1     1       9.841  27.192  34.048  0.00  0.00            0
+ATOM    288    H   1     1      11.776  25.540  35.243  0.00  0.00            0
+ATOM    289    O   1     1       9.898  25.989   4.553  0.00  0.00            0
+ATOM    290    H   1     1       8.902  26.131   6.039  0.00  0.00            0
+ATOM    291    H   1     1      10.287  27.806   4.376  0.00  0.00            0
+ATOM    292    O   1     1      14.308  26.960  10.877  0.00  0.00            0
+ATOM    293    H   1     1      15.302  27.405  12.173  0.00  0.00            0
+ATOM    294    H   1     1      15.463  26.151   9.633  0.00  0.00            0
+ATOM    295    O   1     1      13.433  22.960  16.904  0.00  0.00            0
+ATOM    296    H   1     1      13.409  24.131  18.132  0.00  0.00            0
+ATOM    297    H   1     1      13.624  21.191  17.520  0.00  0.00            0
+ATOM    298    O   1     1      16.409  26.768  26.875  0.00  0.00            0
+ATOM    299    H   1     1      17.590  26.987  25.431  0.00  0.00            0
+ATOM    300    H   1     1      14.751  27.703  26.230  0.00  0.00            0
+ATOM    301    O   1     1      14.405  22.733  29.892  0.00  0.00            0
+ATOM    302    H   1     1      15.423  23.079  28.494  0.00  0.00            0
+ATOM    303    H   1     1      12.826  23.259  29.416  0.00  0.00            0
+ATOM    304    O   1     1       6.905  29.408   0.749  0.00  0.00            0
+ATOM    305    H   1     1       8.428  30.483   1.567  0.00  0.00            0
+ATOM    306    H   1     1       6.353  30.814  -0.444  0.00  0.00            0
+ATOM    307    O   1     1       9.189  34.159   6.509  0.00  0.00            0
+ATOM    308    H   1     1      10.198  34.193   8.002  0.00  0.00            0
+ATOM    309    H   1     1       9.890  35.692   5.785  0.00  0.00            0
+ATOM    310    O   1     1      14.256  32.316   9.369  0.00  0.00            0
+ATOM    311    H   1     1      15.733  32.867   9.486  0.00  0.00            0
+ATOM    312    H   1     1      14.754  30.670  10.090  0.00  0.00            0
+ATOM    313    O   1     1      14.714  30.841  16.516  0.00  0.00            0
+ATOM    314    H   1     1      13.748  29.551  17.279  0.00  0.00            0
+ATOM    315    H   1     1      13.218  31.933  16.614  0.00  0.00            0
+ATOM    316    O   1     1      18.409  33.641  20.611  0.00  0.00            0
+ATOM    317    H   1     1      19.601  32.274  21.115  0.00  0.00            0
+ATOM    318    H   1     1      17.360  32.655  19.518  0.00  0.00            0
+ATOM    319    O   1     1      16.062  28.638  32.207  0.00  0.00            0
+ATOM    320    H   1     1      14.648  27.958  33.253  0.00  0.00            0
+ATOM    321    H   1     1      15.752  28.014  30.522  0.00  0.00            0
+ATOM    322    O   1     1      16.200  30.895   1.473  0.00  0.00            0
+ATOM    323    H   1     1      16.626  29.968  -0.130  0.00  0.00            0
+ATOM    324    H   1     1      17.167  29.833   2.927  0.00  0.00            0
+ATOM    325    O   1     1      20.278   3.529   6.048  0.00  0.00            0
+ATOM    326    H   1     1      20.977   3.611   4.575  0.00  0.00            0
+ATOM    327    H   1     1      21.312   4.513   7.251  0.00  0.00            0
+ATOM    328    O   1     1      23.079   5.778  10.408  0.00  0.00            0
+ATOM    329    H   1     1      24.650   6.259  10.838  0.00  0.00            0
+ATOM    330    H   1     1      22.342   7.609  10.178  0.00  0.00            0
+ATOM    331    O   1     1      19.581   2.031  12.110  0.00  0.00            0
+ATOM    332    H   1     1      19.039   1.082  10.440  0.00  0.00            0
+ATOM    333    H   1     1      21.141   2.991  11.851  0.00  0.00            0
+ATOM    334    O   1     1      22.005   3.223  23.178  0.00  0.00            0
+ATOM    335    H   1     1      21.429   4.090  24.554  0.00  0.00            0
+ATOM    336    H   1     1      20.654   1.791  22.711  0.00  0.00            0
+ATOM    337    O   1     1      16.630   6.422  23.792  0.00  0.00            0
+ATOM    338    H   1     1      16.219   4.804  24.406  0.00  0.00            0
+ATOM    339    H   1     1      17.066   7.128  25.282  0.00  0.00            0
+ATOM    340    O   1     1      21.676   5.564  28.158  0.00  0.00            0
+ATOM    341    H   1     1      20.658   6.717  29.185  0.00  0.00            0
+ATOM    342    H   1     1      23.413   5.828  28.996  0.00  0.00            0
+ATOM    343    O   1     1      15.257   5.265   5.626  0.00  0.00            0
+ATOM    344    H   1     1      16.914   4.519   5.490  0.00  0.00            0
+ATOM    345    H   1     1      15.144   6.150   6.972  0.00  0.00            0
+ATOM    346    O   1     1      20.137  11.082  10.437  0.00  0.00            0
+ATOM    347    H   1     1      20.021  10.947   8.733  0.00  0.00            0
+ATOM    348    H   1     1      21.025  12.555  10.853  0.00  0.00            0
+ATOM    349    O   1     1      23.089  14.627  12.437  0.00  0.00            0
+ATOM    350    H   1     1      24.716  15.254  12.736  0.00  0.00            0
+ATOM    351    H   1     1      23.284  13.228  13.653  0.00  0.00            0
+ATOM    352    O   1     1      24.083  12.649  22.566  0.00  0.00            0
+ATOM    353    H   1     1      22.397  12.663  23.042  0.00  0.00            0
+ATOM    354    H   1     1      24.901  13.851  23.565  0.00  0.00            0
+ATOM    355    O   1     1      17.865   7.909  30.036  0.00  0.00            0
+ATOM    356    H   1     1      17.509   8.045  31.982  0.00  0.00            0
+ATOM    357    H   1     1      18.078   9.582  29.318  0.00  0.00            0
+ATOM    358    O   1     1      18.824   8.486   0.104  0.00  0.00            0
+ATOM    359    H   1     1      19.997  10.191  -0.057  0.00  0.00            0
+ATOM    360    H   1     1      17.077   8.998   0.779  0.00  0.00            0
+ATOM    361    O   1     1      20.122   9.143   5.343  0.00  0.00            0
+ATOM    362    H   1     1      19.373   8.819   3.821  0.00  0.00            0
+ATOM    363    H   1     1      21.998   8.776   5.128  0.00  0.00            0
+ATOM    364    O   1     1      16.413  14.459   5.855  0.00  0.00            0
+ATOM    365    H   1     1      15.536  13.007   5.239  0.00  0.00            0
+ATOM    366    H   1     1      16.006  14.725   7.737  0.00  0.00            0
+ATOM    367    O   1     1      17.561  15.066  15.654  0.00  0.00            0
+ATOM    368    H   1     1      17.575  13.398  16.055  0.00  0.00            0
+ATOM    369    H   1     1      18.978  15.828  16.400  0.00  0.00            0
+ATOM    370    O   1     1      26.374  17.047  24.817  0.00  0.00            0
+ATOM    371    H   1     1      27.983  17.098  25.632  0.00  0.00            0
+ATOM    372    H   1     1      25.629  18.751  24.919  0.00  0.00            0
+ATOM    373    O   1     1      19.784  12.960  28.706  0.00  0.00            0
+ATOM    374    H   1     1      21.662  13.055  28.871  0.00  0.00            0
+ATOM    375    H   1     1      19.545  14.070  27.143  0.00  0.00            0
+ATOM    376    O   1     1      17.891  16.733  32.499  0.00  0.00            0
+ATOM    377    H   1     1      18.327  15.240  31.277  0.00  0.00            0
+ATOM    378    H   1     1      18.633  18.335  31.693  0.00  0.00            0
+ATOM    379    O   1     1      23.733  23.024   1.663  0.00  0.00            0
+ATOM    380    H   1     1      24.800  24.052   2.776  0.00  0.00            0
+ATOM    381    H   1     1      24.693  22.618   0.198  0.00  0.00            0
+ATOM    382    O   1     1      20.789  18.440   9.443  0.00  0.00            0
+ATOM    383    H   1     1      20.766  17.257   7.881  0.00  0.00            0
+ATOM    384    H   1     1      21.896  17.345  10.385  0.00  0.00            0
+ATOM    385    O   1     1      21.574  17.493  17.838  0.00  0.00            0
+ATOM    386    H   1     1      20.597  18.955  17.218  0.00  0.00            0
+ATOM    387    H   1     1      22.538  16.874  16.251  0.00  0.00            0
+ATOM    388    O   1     1      19.168  14.748  24.131  0.00  0.00            0
+ATOM    389    H   1     1      19.711  16.390  23.712  0.00  0.00            0
+ATOM    390    H   1     1      17.429  14.695  24.403  0.00  0.00            0
+ATOM    391    O   1     1      22.149  20.198  24.977  0.00  0.00            0
+ATOM    392    H   1     1      21.639  20.924  26.486  0.00  0.00            0
+ATOM    393    H   1     1      22.656  21.657  24.411  0.00  0.00            0
+ATOM    394    O   1     1      20.565  20.792  29.600  0.00  0.00            0
+ATOM    395    H   1     1      22.264  20.409  30.214  0.00  0.00            0
+ATOM    396    H   1     1      20.548  22.408  30.597  0.00  0.00            0
+ATOM    397    O   1     1      20.802  26.547   9.615  0.00  0.00            0
+ATOM    398    H   1     1      20.099  27.984   8.338  0.00  0.00            0
+ATOM    399    H   1     1      21.277  27.539  11.325  0.00  0.00            0
+ATOM    400    O   1     1      16.283  23.589   7.779  0.00  0.00            0
+ATOM    401    H   1     1      16.093  21.973   6.712  0.00  0.00            0
+ATOM    402    H   1     1      17.901  22.971   8.154  0.00  0.00            0
+ATOM    403    O   1     1      18.469  29.798  13.568  0.00  0.00            0
+ATOM    404    H   1     1      19.712  31.216  13.506  0.00  0.00            0
+ATOM    405    H   1     1      16.872  30.343  14.396  0.00  0.00            0
+ATOM    406    O   1     1      18.790  21.712  16.060  0.00  0.00            0
+ATOM    407    H   1     1      19.878  23.090  16.485  0.00  0.00            0
+ATOM    408    H   1     1      17.201  22.326  15.819  0.00  0.00            0
+ATOM    409    O   1     1      21.747  26.084  16.349  0.00  0.00            0
+ATOM    410    H   1     1      20.783  27.021  15.300  0.00  0.00            0
+ATOM    411    H   1     1      22.705  27.328  17.206  0.00  0.00            0
+ATOM    412    O   1     1      20.769  26.211  32.050  0.00  0.00            0
+ATOM    413    H   1     1      21.488  27.404  33.328  0.00  0.00            0
+ATOM    414    H   1     1      18.989  26.710  32.145  0.00  0.00            0
+ATOM    415    O   1     1      19.820  29.181   5.559  0.00  0.00            0
+ATOM    416    H   1     1      20.991  29.509   4.109  0.00  0.00            0
+ATOM    417    H   1     1      19.431  31.018   6.221  0.00  0.00            0
+ATOM    418    O   1     1      19.240  33.867   7.993  0.00  0.00            0
+ATOM    419    H   1     1      19.107  35.039   6.604  0.00  0.00            0
+ATOM    420    H   1     1      20.697  33.671   9.063  0.00  0.00            0
+ATOM    421    O   1     1      22.511  34.976  15.793  0.00  0.00            0
+ATOM    422    H   1     1      23.716  36.163  16.603  0.00  0.00            0
+ATOM    423    H   1     1      21.699  36.150  14.467  0.00  0.00            0
+ATOM    424    O   1     1      22.622  30.284  19.069  0.00  0.00            0
+ATOM    425    H   1     1      22.049  31.351  17.725  0.00  0.00            0
+ATOM    426    H   1     1      24.411  30.773  19.576  0.00  0.00            0
+ATOM    427    O   1     1      18.639  33.611  28.369  0.00  0.00            0
+ATOM    428    H   1     1      18.226  32.159  29.103  0.00  0.00            0
+ATOM    429    H   1     1      19.906  33.008  27.158  0.00  0.00            0
+ATOM    430    O   1     1      22.520   1.325  31.926  0.00  0.00            0
+ATOM    431    H   1     1      22.803   2.668  30.796  0.00  0.00            0
+ATOM    432    H   1     1      21.045   0.425  31.122  0.00  0.00            0
+ATOM    433    O   1     1      21.754   3.789   1.159  0.00  0.00            0
+ATOM    434    H   1     1      22.085   2.785  -0.180  0.00  0.00            0
+ATOM    435    H   1     1      20.850   5.175   0.610  0.00  0.00            0
+ATOM    436    O   1     1      28.457   5.539  12.133  0.00  0.00            0
+ATOM    437    H   1     1      29.489   4.390  11.182  0.00  0.00            0
+ATOM    438    H   1     1      29.161   7.131  12.587  0.00  0.00            0
+ATOM    439    O   1     1      22.495   5.966  17.324  0.00  0.00            0
+ATOM    440    H   1     1      24.377   5.379  17.393  0.00  0.00            0
+ATOM    441    H   1     1      21.906   5.491  18.857  0.00  0.00            0
+ATOM    442    O   1     1      28.128   3.304  22.287  0.00  0.00            0
+ATOM    443    H   1     1      28.123   2.999  20.491  0.00  0.00            0
+ATOM    444    H   1     1      26.533   3.355  22.876  0.00  0.00            0
+ATOM    445    O   1     1      28.378  10.455  27.266  0.00  0.00            0
+ATOM    446    H   1     1      30.019  10.292  28.051  0.00  0.00            0
+ATOM    447    H   1     1      28.635  10.039  25.463  0.00  0.00            0
+ATOM    448    O   1     1      27.031   8.353  34.806  0.00  0.00            0
+ATOM    449    H   1     1      26.116   9.984  34.571  0.00  0.00            0
+ATOM    450    H   1     1      28.685   8.951  34.739  0.00  0.00            0
+ATOM    451    O   1     1      24.951   8.160   4.454  0.00  0.00            0
+ATOM    452    H   1     1      25.930   9.616   5.160  0.00  0.00            0
+ATOM    453    H   1     1      25.947   7.994   2.724  0.00  0.00            0
+ATOM    454    O   1     1      26.937  12.436   6.869  0.00  0.00            0
+ATOM    455    H   1     1      25.492  13.284   6.708  0.00  0.00            0
+ATOM    456    H   1     1      27.689  13.332   8.266  0.00  0.00            0
+ATOM    457    O   1     1      23.365  11.214  16.933  0.00  0.00            0
+ATOM    458    H   1     1      22.247   9.744  16.789  0.00  0.00            0
+ATOM    459    H   1     1      23.264  12.035  18.539  0.00  0.00            0
+ATOM    460    O   1     1      28.321   8.759  22.158  0.00  0.00            0
+ATOM    461    H   1     1      27.662   6.895  22.482  0.00  0.00            0
+ATOM    462    H   1     1      26.971   9.710  21.902  0.00  0.00            0
+ATOM    463    O   1     1      27.071   6.109  29.555  0.00  0.00            0
+ATOM    464    H   1     1      27.591   7.663  28.857  0.00  0.00            0
+ATOM    465    H   1     1      27.304   6.320  31.261  0.00  0.00            0
+ATOM    466    O   1     1      22.474  11.704  34.640  0.00  0.00            0
+ATOM    467    H   1     1      22.752  13.304  35.584  0.00  0.00            0
+ATOM    468    H   1     1      22.840  12.090  33.030  0.00  0.00            0
+ATOM    469    O   1     1      21.656  14.971   5.615  0.00  0.00            0
+ATOM    470    H   1     1      21.690  15.860   3.977  0.00  0.00            0
+ATOM    471    H   1     1      19.964  14.225   5.774  0.00  0.00            0
+ATOM    472    O   1     1      28.539  21.492   9.820  0.00  0.00            0
+ATOM    473    H   1     1      27.288  22.181   8.688  0.00  0.00            0
+ATOM    474    H   1     1      28.065  22.420  11.602  0.00  0.00            0
+ATOM    475    O   1     1      28.364  16.020  11.109  0.00  0.00            0
+ATOM    476    H   1     1      30.033  16.649  12.089  0.00  0.00            0
+ATOM    477    H   1     1      28.456  17.440  10.082  0.00  0.00            0
+ATOM    478    O   1     1       0.054  13.686  18.103  0.00  0.00            0
+ATOM    479    H   1     1      -1.714  12.928  18.841  0.00  0.00            0
+ATOM    480    H   1     1       1.008  12.429  17.383  0.00  0.00            0
+ATOM    481    O   1     1      24.636  12.894  29.957  0.00  0.00            0
+ATOM    482    H   1     1      25.906  13.914  31.183  0.00  0.00            0
+ATOM    483    H   1     1      25.641  11.609  29.162  0.00  0.00            0
+ATOM    484    O   1     1      21.548  17.250   0.749  0.00  0.00            0
+ATOM    485    H   1     1      21.843  19.026   0.905  0.00  0.00            0
+ATOM    486    H   1     1      20.385  16.716  -0.697  0.00  0.00            0
+ATOM    487    O   1     1      26.095  27.274   4.520  0.00  0.00            0
+ATOM    488    H   1     1      27.889  26.458   4.505  0.00  0.00            0
+ATOM    489    H   1     1      25.648  26.970   6.165  0.00  0.00            0
+ATOM    490    O   1     1      23.610  22.515   8.008  0.00  0.00            0
+ATOM    491    H   1     1      22.653  21.187   8.739  0.00  0.00            0
+ATOM    492    H   1     1      22.286  24.095   8.444  0.00  0.00            0
+ATOM    493    O   1     1      27.355  18.929  18.180  0.00  0.00            0
+ATOM    494    H   1     1      27.200  20.349  17.155  0.00  0.00            0
+ATOM    495    H   1     1      25.579  18.322  18.770  0.00  0.00            0
+ATOM    496    O   1     1      26.765  23.633  14.444  0.00  0.00            0
+ATOM    497    H   1     1      27.441  25.298  13.651  0.00  0.00            0
+ATOM    498    H   1     1      25.086  24.256  14.749  0.00  0.00            0
+ATOM    499    O   1     1      31.478  20.769  20.986  0.00  0.00            0
+ATOM    500    H   1     1      30.440  22.509  21.135  0.00  0.00            0
+ATOM    501    H   1     1      30.567  19.656  20.043  0.00  0.00            0
+ATOM    502    O   1     1      24.812  20.412  32.668  0.00  0.00            0
+ATOM    503    H   1     1      26.242  21.478  31.874  0.00  0.00            0
+ATOM    504    H   1     1      25.787  19.023  33.158  0.00  0.00            0
+ATOM    505    O   1     1      22.105  29.076   0.928  0.00  0.00            0
+ATOM    506    H   1     1      23.296  27.923   1.739  0.00  0.00            0
+ATOM    507    H   1     1      22.623  30.994   0.882  0.00  0.00            0
+ATOM    508    O   1     1      29.572  31.256   8.626  0.00  0.00            0
+ATOM    509    H   1     1      30.795  30.203   7.736  0.00  0.00            0
+ATOM    510    H   1     1      28.277  31.519   7.260  0.00  0.00            0
+ATOM    511    O   1     1      31.817  34.843  18.283  0.00  0.00            0
+ATOM    512    H   1     1      32.438  34.389  16.474  0.00  0.00            0
+ATOM    513    H   1     1      32.743  36.422  18.341  0.00  0.00            0
+ATOM    514    O   1     1      27.915  25.601  19.033  0.00  0.00            0
+ATOM    515    H   1     1      29.358  26.561  19.190  0.00  0.00            0
+ATOM    516    H   1     1      28.148  24.429  17.530  0.00  0.00            0
+ATOM    517    O   1     1      24.548  24.654  24.025  0.00  0.00            0
+ATOM    518    H   1     1      25.528  25.635  22.824  0.00  0.00            0
+ATOM    519    H   1     1      25.300  25.200  25.645  0.00  0.00            0
+ATOM    520    O   1     1      28.540  22.922  30.370  0.00  0.00            0
+ATOM    521    H   1     1      27.414  24.096  29.781  0.00  0.00            0
+ATOM    522    H   1     1      29.674  23.914  31.873  0.00  0.00            0
+ATOM    523    O   1     1      24.969  33.623   1.014  0.00  0.00            0
+ATOM    524    H   1     1      26.521  33.058   1.518  0.00  0.00            0
+ATOM    525    H   1     1      24.990  34.322  -0.683  0.00  0.00            0
+ATOM    526    O   1     1      23.075  32.171  11.324  0.00  0.00            0
+ATOM    527    H   1     1      23.316  32.775  13.097  0.00  0.00            0
+ATOM    528    H   1     1      24.460  33.203  10.662  0.00  0.00            0
+ATOM    529    O   1     1      27.497   2.736  17.224  0.00  0.00            0
+ATOM    530    H   1     1      28.397   3.415  15.715  0.00  0.00            0
+ATOM    531    H   1     1      28.234   1.233  17.412  0.00  0.00            0
+ATOM    532    O   1     1      26.369  33.060  22.077  0.00  0.00            0
+ATOM    533    H   1     1      26.170  34.746  22.264  0.00  0.00            0
+ATOM    534    H   1     1      27.592  32.404  23.321  0.00  0.00            0
+ATOM    535    O   1     1      30.221  30.950  25.843  0.00  0.00            0
+ATOM    536    H   1     1      30.305  29.038  26.208  0.00  0.00            0
+ATOM    537    H   1     1      30.363  31.979  27.414  0.00  0.00            0
+ATOM    538    O   1     1      24.973  26.732  28.607  0.00  0.00            0
+ATOM    539    H   1     1      25.385  28.369  29.248  0.00  0.00            0
+ATOM    540    H   1     1      23.330  26.597  29.234  0.00  0.00            0
+ATOM    541    O   1     1      32.165   4.857   2.258  0.00  0.00            0
+ATOM    542    H   1     1      32.417   6.195   1.157  0.00  0.00            0
+ATOM    543    H   1     1      32.615   3.727   1.112  0.00  0.00            0
+ATOM    544    O   1     1      28.067   3.533   5.217  0.00  0.00            0
+ATOM    545    H   1     1      26.960   4.447   4.158  0.00  0.00            0
+ATOM    546    H   1     1      29.875   3.863   4.448  0.00  0.00            0
+ATOM    547    O   1     1      33.279   2.782  13.028  0.00  0.00            0
+ATOM    548    H   1     1      33.708   3.955  11.817  0.00  0.00            0
+ATOM    549    H   1     1      33.656   3.545  14.631  0.00  0.00            0
+ATOM    550    O   1     1      34.278   4.944  17.492  0.00  0.00            0
+ATOM    551    H   1     1      33.438   6.563  17.876  0.00  0.00            0
+ATOM    552    H   1     1      34.906   4.452  18.995  0.00  0.00            0
+ATOM    553    O   1     1      32.363   1.908  26.092  0.00  0.00            0
+ATOM    554    H   1     1      31.941   1.683  24.268  0.00  0.00            0
+ATOM    555    H   1     1      33.850   1.390  26.904  0.00  0.00            0
+ATOM    556    O   1     1      27.982   0.418  28.241  0.00  0.00            0
+ATOM    557    H   1     1      27.516   2.080  28.309  0.00  0.00            0
+ATOM    558    H   1     1      29.593   0.176  27.299  0.00  0.00            0
+ATOM    559    O   1     1      28.845  14.672   2.724  0.00  0.00            0
+ATOM    560    H   1     1      27.963  13.930   4.139  0.00  0.00            0
+ATOM    561    H   1     1      30.386  15.714   3.379  0.00  0.00            0
+ATOM    562    O   1     1      28.083  10.618  14.298  0.00  0.00            0
+ATOM    563    H   1     1      28.623  12.160  13.293  0.00  0.00            0
+ATOM    564    H   1     1      26.486  11.015  15.379  0.00  0.00            0
+ATOM    565    O   1     1      33.867  10.545  13.306  0.00  0.00            0
+ATOM    566    H   1     1      35.165   9.612  13.810  0.00  0.00            0
+ATOM    567    H   1     1      33.615  10.270  11.513  0.00  0.00            0
+ATOM    568    O   1     1      31.790   9.696  18.223  0.00  0.00            0
+ATOM    569    H   1     1      30.484   9.334  19.421  0.00  0.00            0
+ATOM    570    H   1     1      30.834  10.096  16.929  0.00  0.00            0
+ATOM    571    O   1     1      30.141  15.006  21.532  0.00  0.00            0
+ATOM    572    H   1     1      28.565  15.594  22.099  0.00  0.00            0
+ATOM    573    H   1     1      30.942  14.253  23.077  0.00  0.00            0
+ATOM    574    O   1     1      32.798  10.732  30.680  0.00  0.00            0
+ATOM    575    H   1     1      34.073   9.528  30.799  0.00  0.00            0
+ATOM    576    H   1     1      32.991  11.512  28.983  0.00  0.00            0
+ATOM    577    O   1     1      33.652  16.265   5.086  0.00  0.00            0
+ATOM    578    H   1     1      35.399  16.239   4.730  0.00  0.00            0
+ATOM    579    H   1     1      33.503  17.939   5.631  0.00  0.00            0
+ATOM    580    O   1     1      31.947  10.799   7.943  0.00  0.00            0
+ATOM    581    H   1     1      29.894  10.549   7.619  0.00  0.00            0
+ATOM    582    H   1     1      32.271  12.414   7.075  0.00  0.00            0
+ATOM    583    O   1     1       0.329  15.516  11.746  0.00  0.00            0
+ATOM    584    H   1     1      -0.446  14.249  12.939  0.00  0.00            0
+ATOM    585    H   1     1      -0.685  17.018  11.935  0.00  0.00            0
+ATOM    586    O   1     1       4.262  19.165  14.308  0.00  0.00            0
+ATOM    587    H   1     1       3.579  17.691  14.920  0.00  0.00            0
+ATOM    588    H   1     1       5.723  19.183  15.204  0.00  0.00            0
+ATOM    589    O   1     1      32.995  13.546  25.948  0.00  0.00            0
+ATOM    590    H   1     1      32.167  15.060  26.787  0.00  0.00            0
+ATOM    591    H   1     1      34.425  13.800  25.007  0.00  0.00            0
+ATOM    592    O   1     1       1.773  13.524  34.037  0.00  0.00            0
+ATOM    593    H   1     1       0.227  14.409  33.446  0.00  0.00            0
+ATOM    594    H   1     1       2.167  14.670  35.511  0.00  0.00            0
+ATOM    595    O   1     1      33.029  20.529   7.247  0.00  0.00            0
+ATOM    596    H   1     1      34.388  21.414   8.003  0.00  0.00            0
+ATOM    597    H   1     1      31.451  20.831   8.182  0.00  0.00            0
+ATOM    598    O   1     1       2.037  24.250  10.251  0.00  0.00            0
+ATOM    599    H   1     1       3.743  25.008   9.876  0.00  0.00            0
+ATOM    600    H   1     1       1.894  25.043  11.903  0.00  0.00            0
+ATOM    601    O   1     1      32.753  19.259  13.976  0.00  0.00            0
+ATOM    602    H   1     1      32.792  20.886  13.792  0.00  0.00            0
+ATOM    603    H   1     1      34.334  18.799  14.976  0.00  0.00            0
+ATOM    604    O   1     1       0.396  18.673  18.699  0.00  0.00            0
+ATOM    605    H   1     1      -1.211  18.950  19.127  0.00  0.00            0
+ATOM    606    H   1     1       0.469  16.977  18.436  0.00  0.00            0
+ATOM    607    O   1     1      30.855  18.370  27.959  0.00  0.00            0
+ATOM    608    H   1     1      29.759  19.681  28.690  0.00  0.00            0
+ATOM    609    H   1     1      32.103  19.477  26.763  0.00  0.00            0
+ATOM    610    O   1     1      27.723  15.992  33.091  0.00  0.00            0
+ATOM    611    H   1     1      29.390  16.423  32.192  0.00  0.00            0
+ATOM    612    H   1     1      27.801  15.859  34.804  0.00  0.00            0
+ATOM    613    O   1     1      31.068  27.895   3.348  0.00  0.00            0
+ATOM    614    H   1     1      32.517  27.825   4.610  0.00  0.00            0
+ATOM    615    H   1     1      31.529  29.459   2.324  0.00  0.00            0
+ATOM    616    O   1     1      35.039  28.008   6.663  0.00  0.00            0
+ATOM    617    H   1     1      35.966  26.934   7.683  0.00  0.00            0
+ATOM    618    H   1     1      36.055  28.336   5.336  0.00  0.00            0
+ATOM    619    O   1     1      29.356  28.196  13.025  0.00  0.00            0
+ATOM    620    H   1     1      29.210  29.335  14.589  0.00  0.00            0
+ATOM    621    H   1     1      28.874  29.629  11.867  0.00  0.00            0
+ATOM    622    O   1     1      32.386  28.434  18.961  0.00  0.00            0
+ATOM    623    H   1     1      33.368  28.574  20.411  0.00  0.00            0
+ATOM    624    H   1     1      33.410  27.406  17.949  0.00  0.00            0
+ATOM    625    O   1     1      30.898  25.390  25.799  0.00  0.00            0
+ATOM    626    H   1     1      32.369  25.913  24.580  0.00  0.00            0
+ATOM    627    H   1     1      31.317  24.075  27.029  0.00  0.00            0
+ATOM    628    O   1     1      32.259  25.611  33.104  0.00  0.00            0
+ATOM    629    H   1     1      32.238  25.736  34.806  0.00  0.00            0
+ATOM    630    H   1     1      33.920  25.042  32.775  0.00  0.00            0
+ATOM    631    O   1     1      30.290  32.645   1.341  0.00  0.00            0
+ATOM    632    H   1     1      29.949  32.793  -0.430  0.00  0.00            0
+ATOM    633    H   1     1      31.762  33.340   1.847  0.00  0.00            0
+ATOM    634    O   1     1      25.536  34.235   6.469  0.00  0.00            0
+ATOM    635    H   1     1      25.716  36.059   6.651  0.00  0.00            0
+ATOM    636    H   1     1      25.283  33.866   4.895  0.00  0.00            0
+ATOM    637    O   1     1      31.674  33.161  13.106  0.00  0.00            0
+ATOM    638    H   1     1      31.793  34.863  13.281  0.00  0.00            0
+ATOM    639    H   1     1      30.425  32.928  11.783  0.00  0.00            0
+ATOM    640    O   1     1      33.844  32.668  22.296  0.00  0.00            0
+ATOM    641    H   1     1      32.750  32.234  23.524  0.00  0.00            0
+ATOM    642    H   1     1      32.917  32.875  20.736  0.00  0.00            0
+ATOM    643    O   1     1      31.603  30.542  30.805  0.00  0.00            0
+ATOM    644    H   1     1      33.451  30.804  30.468  0.00  0.00            0
+ATOM    645    H   1     1      31.575  28.816  31.756  0.00  0.00            0
+ATOM    646    O   1     1      26.295  31.235  30.599  0.00  0.00            0
+ATOM    647    H   1     1      27.834  30.515  30.607  0.00  0.00            0
+ATOM    648    H   1     1      26.362  32.920  29.856  0.00  0.00            0
+END
diff --git a/tools/i-pi/examples/lammps/h2o-piglet.8/data.water b/tools/i-pi/examples/lammps/h2o-piglet.8/data.water
new file mode 100644
index 0000000000000000000000000000000000000000..13c75e993391340233222a511f10b475c6240737
--- /dev/null
+++ b/tools/i-pi/examples/lammps/h2o-piglet.8/data.water
@@ -0,0 +1,1331 @@
+LAMMPS Description
+ 
+         648  atoms
+         432  bonds
+         216  angles
+ 
+           2  atom types
+           1  bond types
+           1  angle types
+ 
+         0 35.233 xlo xhi
+         0 35.233 ylo yhi
+         0 35.233 zlo zhi
+ 
+Masses
+ 
+  1 15.9994
+  2  1.0080
+ 
+Bond Coeffs
+ 
+  1    1.78    0.2708585 -0.327738785 0.231328959
+ 
+Angle Coeffs
+ 
+  1    0.0700  107.400000
+
+Atoms
+ 
+ 1 1 1 -1.1128       3.84600000       5.67200001       1.32300000
+ 2 1 2 0.5564        2.97900000       7.05400000       0.85700000
+ 3 1 2 0.5564        5.52500001       5.69700001       0.45100000
+ 4 2 1 -1.1128      34.55700001      34.34100000       3.07800000
+ 5 2 2 0.5564       33.72200001      34.68900000       4.84000001
+ 6 2 2 0.5564       36.02900000      33.22000001       3.71100001
+ 7 3 1 -1.1128       5.59100000       1.96299999      13.47700000
+ 8 3 2 0.5564        7.26500000       1.86400000      13.85100001
+ 9 3 2 0.5564        5.00899999       3.55500000      13.91599999
+ 10 4 1 -1.1128       1.06000000       2.06100000      21.71800001
+ 11 4 2 0.5564        0.75700000       0.26100000      21.82000000
+ 12 4 2 0.5564        0.21300001       3.01299999      23.04700000
+ 13 5 1 -1.1128       1.20000000       1.33700000      29.00599999
+ 14 5 2 0.5564        0.81800000       1.88399999      30.73200000
+ 15 5 2 0.5564        2.88300001       1.82500000      29.01100000
+ 16 6 1 -1.1128       1.33100001       1.38599999      34.30600001
+ 17 6 2 0.5564        2.39200001       2.89799999      34.84600000
+ 18 6 2 0.5564        0.81400000       0.53200001      35.83600000
+ 19 7 1 -1.1128      31.45100000      10.20100000       0.72599999
+ 20 7 2 0.5564       32.28199999      10.87699999      -0.75000000
+ 21 7 2 0.5564       30.91999999      11.59399999       1.67700000
+ 22 8 1 -1.1128       0.83600000      10.80800001       4.29800000
+ 23 8 2 0.5564        0.30500000      10.64300001       2.79300000
+ 24 8 2 0.5564       -0.35600001      10.33400000       5.52400000
+ 25 9 1 -1.1128      34.38100001       5.97900000       9.19400000
+ 26 9 2 0.5564       33.61600000       7.67300000       8.85700000
+ 27 9 2 0.5564       35.11500000       5.25999999       7.61800001
+ 28 10 1 -1.1128      33.21200000       6.48000000      24.27799999
+ 29 10 2 0.5564       31.62400000       6.90800001      23.52100001
+ 30 10 2 0.5564       32.54400000       4.99000000      24.98200000
+ 31 11 1 -1.1128       1.99200000       9.00199999      26.86300000
+ 32 11 2 0.5564        1.85600000      10.17500000      25.57899999
+ 33 11 2 0.5564        0.51900000       8.09899999      26.38599999
+ 34 12 1 -1.1128       2.05400000       8.66000000      32.51499999
+ 35 12 2 0.5564        2.16699999       8.72700000      30.49400000
+ 36 12 2 0.5564        2.37400001      10.51300000      33.03799999
+ 37 13 1 -1.1128       3.40200000      16.63900001       3.00800000
+ 38 13 2 0.5564        4.12700001      15.87200001       4.44600001
+ 39 13 2 0.5564        2.90500001      18.33899999       3.15999999
+ 40 14 1 -1.1128       4.22200000      15.44400000       8.07200000
+ 41 14 2 0.5564        5.21100000      16.75600000       8.29900001
+ 42 14 2 0.5564        2.56000000      15.49200001       8.86000000
+ 43 15 1 -1.1128       2.83100000       9.24599999      16.48800000
+ 44 15 2 0.5564        2.86900001       8.02300001      18.05000000
+ 45 15 2 0.5564        3.96000000       8.46700001      15.15400000
+ 46 16 1 -1.1128       5.56300000       6.00300000      20.90700000
+ 47 16 2 0.5564        4.65300000       4.63800000      21.48000000
+ 48 16 2 0.5564        6.40500000       6.20800000      22.52899999
+ 49 17 1 -1.1128       2.08700001      13.37000000      22.91299999
+ 50 17 2 0.5564        2.83200000      14.80400001      23.42200000
+ 51 17 2 0.5564        1.43400000      13.50900000      21.19599999
+ 52 18 1 -1.1128       3.36900000      17.88600000      25.10900001
+ 53 18 2 0.5564        3.65500000      17.20000000      26.76599999
+ 54 18 2 0.5564        4.77200001      18.97699999      24.49999999
+ 55 19 1 -1.1128      34.76400000      20.80300000       0.94800001
+ 56 19 2 0.5564       35.20999999      21.26700001       2.81599999
+ 57 19 2 0.5564       35.96200001      21.72599999       0.13099999
+ 58 20 1 -1.1128       2.83600000      24.17799999      15.22900000
+ 59 20 2 0.5564        2.79500000      22.34599999      14.87600001
+ 60 20 2 0.5564        2.41399999      24.11500000      17.13000001
+ 61 21 1 -1.1128      33.00000000      24.48100000      15.23000000
+ 62 21 2 0.5564       34.63999999      24.80400001      15.01299999
+ 63 21 2 0.5564       32.40100000      25.76400000      14.29500001
+ 64 22 1 -1.1128       0.40399999      26.77900001      23.39999999
+ 65 22 2 0.5564        1.35300001      27.24800000      24.98700001
+ 66 22 2 0.5564        1.54600001      28.05000000      22.31700001
+ 67 23 1 -1.1128      34.22200000      21.38000000      25.41799999
+ 68 23 2 0.5564       35.66899999      20.15100000      25.31700001
+ 69 23 2 0.5564       32.96000000      21.18000000      23.99200000
+ 70 24 1 -1.1128      33.25900000      17.43800000      32.48000000
+ 71 24 2 0.5564       33.31399999      18.78200000      33.88300001
+ 72 24 2 0.5564       32.74300001      18.18100001      30.87100000
+ 73 25 1 -1.1128       4.46300000      21.97900000       3.93600000
+ 74 25 2 0.5564        5.85600000      23.08400001       3.39999999
+ 75 25 2 0.5564        3.98600000      22.18000000       5.60200000
+ 76 26 1 -1.1128       6.25800000      25.85100001       8.52000000
+ 77 26 2 0.5564        5.76700000      27.69300001       8.47600000
+ 78 26 2 0.5564        7.20200001      25.50600000      10.18600000
+ 79 27 1 -1.1128       0.60099999      29.73699999      12.74700001
+ 80 27 2 0.5564       -0.68500000      30.84200000      12.34999999
+ 81 27 2 0.5564        1.33600000      30.71600000      14.03099999
+ 82 28 1 -1.1128       7.56300000      28.19100001      24.33300000
+ 83 28 2 0.5564        9.20100000      28.82800000      24.68400000
+ 84 28 2 0.5564        7.38100001      27.62100000      22.79900000
+ 85 29 1 -1.1128       3.65300000      27.10900001      27.77200001
+ 86 29 2 0.5564        5.12600000      27.01500000      26.77200001
+ 87 29 2 0.5564        3.03099999      28.75600000      27.69800000
+ 88 30 1 -1.1128       2.59600001      23.99100001      32.47600000
+ 89 30 2 0.5564        2.87900000      24.79099999      30.85899999
+ 90 30 2 0.5564        4.00300000      22.91299999      32.70099999
+ 91 31 1 -1.1128       3.08300000      31.31700001       3.64399999
+ 92 31 2 0.5564        4.13300000      30.58900001       2.53900001
+ 93 31 2 0.5564        4.21800000      32.17300001       5.03700001
+ 94 32 1 -1.1128       4.66100001      30.55500000       9.36799999
+ 95 32 2 0.5564        3.18400001      29.84300000      10.13200000
+ 96 32 2 0.5564        4.35800000      32.44800000       9.12600000
+ 97 33 1 -1.1128       3.46499999      32.53700000      15.77800000
+ 98 33 2 0.5564        5.07200000      31.81899999      15.90300000
+ 99 33 2 0.5564        4.05500001      34.25699999      15.28400000
+ 100 34 1 -1.1128       4.21500000      29.15299999      20.31700001
+ 101 34 2 0.5564        3.65799999      30.17600000      18.84200000
+ 102 34 2 0.5564        4.95899999      30.29100000      21.44900001
+ 103 35 1 -1.1128       1.12600000      31.33300000      28.76800001
+ 104 35 2 0.5564        2.39500000      31.12399999      29.92500000
+ 105 35 2 0.5564        0.76800001      33.09199999      28.89799999
+ 106 36 1 -1.1128       4.88100000      32.61600000      32.30200000
+ 107 36 2 0.5564        6.58800000      32.91100000      31.72500001
+ 108 36 2 0.5564        4.48599999      34.03700001      33.24900001
+ 109 37 1 -1.1128       8.96200001       5.55600000       0.15100000
+ 110 37 2 0.5564        9.65200000       6.99100001       0.85899999
+ 111 37 2 0.5564        9.17300001       4.47700000       1.64500000
+ 112 38 1 -1.1128       1.83300001       3.51799999       5.67900001
+ 113 38 2 0.5564        2.88900000       2.73100000       6.78800000
+ 114 38 2 0.5564        2.78900000       4.18700000       4.14700000
+ 115 39 1 -1.1128      10.51000001      34.72599999      13.07300001
+ 116 39 2 0.5564       11.91999999      34.11800000      11.91900001
+ 117 39 2 0.5564       11.29500001      34.96800000      14.74100000
+ 118 40 1 -1.1128       7.21200000       0.04199999      22.45399999
+ 119 40 2 0.5564        6.92400000       0.47000000      24.17200000
+ 120 40 2 0.5564        8.31900000       1.22799999      21.65300000
+ 121 41 1 -1.1128       6.36500000       2.01000000      27.54400000
+ 122 41 2 0.5564        5.95400000       3.58500000      26.85199999
+ 123 41 2 0.5564        7.75800001       2.54900000      28.69600000
+ 124 42 1 -1.1128      10.83300001       3.14000000      30.78699999
+ 125 42 2 0.5564       12.69700001       2.97500000      30.86700000
+ 126 42 2 0.5564       10.38899999       3.70000001      32.40399999
+ 127 43 1 -1.1128       8.68400000       9.34200001       3.91200001
+ 128 43 2 0.5564        6.98500000       9.25600001       4.77299999
+ 129 43 2 0.5564        8.68400000      10.80899999       3.01100000
+ 130 44 1 -1.1128       4.87299999       9.91900001       7.70700000
+ 131 44 2 0.5564        3.69800000       9.77100000       6.19400000
+ 132 44 2 0.5564        5.04700000      11.96100000       7.62400000
+ 133 45 1 -1.1128      10.03099999       5.01800000       9.69900000
+ 134 45 2 0.5564        9.67500001       3.38199999      10.34000000
+ 135 45 2 0.5564        9.13200000       5.98700001      10.82500000
+ 136 46 1 -1.1128      11.24599999       3.91800000      21.92900000
+ 137 46 2 0.5564       12.61400001       2.77000000      22.34100000
+ 138 46 2 0.5564       12.07300001       5.68600001      21.49699999
+ 139 47 1 -1.1128       6.82500000       7.16400000      25.70799999
+ 140 47 2 0.5564        8.03600000       8.37400001      25.98000001
+ 141 47 2 0.5564        5.20600001       7.90000000      25.89099999
+ 142 48 1 -1.1128      10.17099999      12.81100001       0.29500001
+ 143 48 2 0.5564       10.03300000      12.81800000      -1.60900000
+ 144 48 2 0.5564        9.87999999      14.49200001       0.48000000
+ 145 49 1 -1.1128       8.19000000      17.40200000       1.25299999
+ 146 49 2 0.5564        9.47199999      18.53100000       1.25299999
+ 147 49 2 0.5564        6.35100000      17.81700000       1.56800001
+ 148 50 1 -1.1128      11.23300000      16.18800001       8.29900001
+ 149 50 2 0.5564       10.29100000      17.68900000       8.16600001
+ 150 50 2 0.5564       12.76800001      17.12300001       8.73299999
+ 151 51 1 -1.1128       6.38599999       8.00199999      12.84600000
+ 152 51 2 0.5564        7.70099999       8.89600000      13.65500000
+ 153 51 2 0.5564        5.59100000       8.87699999      11.51900000
+ 154 52 1 -1.1128       8.18400001      10.41900000      18.84799999
+ 155 52 2 0.5564        9.49800000       9.43400000      19.90500001
+ 156 52 2 0.5564        6.88200000       9.02699999      18.94800001
+ 157 53 1 -1.1128      10.80600000      14.43100000      21.32799999
+ 158 53 2 0.5564        9.17700001      13.53100000      20.67000000
+ 159 53 2 0.5564       11.34400000      15.69600000      20.44800000
+ 160 54 1 -1.1128       9.23700000      13.92800000      30.34100000
+ 161 54 2 0.5564       10.77900001      14.83900000      30.52199999
+ 162 54 2 0.5564        9.96500000      13.19199999      28.89900000
+ 163 55 1 -1.1128      10.91800000      21.70700000       1.86400000
+ 164 55 2 0.5564       10.28000000      23.44900001       2.27900000
+ 165 55 2 0.5564       12.70799999      21.45600000       1.74900000
+ 166 56 1 -1.1128       9.35300001      16.12500000      13.92699999
+ 167 56 2 0.5564        9.93799999      17.59399999      14.61800001
+ 168 56 2 0.5564        9.51799999      16.36000001      12.24400000
+ 169 57 1 -1.1128      10.37099999      11.10700000      14.26800000
+ 170 57 2 0.5564        9.64399999      10.40600001      15.85899999
+ 171 57 2 0.5564        9.43400000      12.52300000      14.11699999
+ 172 58 1 -1.1128       3.35100000      22.76899999      20.19599999
+ 173 58 2 0.5564        2.05500001      23.68600001      21.50300001
+ 174 58 2 0.5564        2.45200000      21.40100000      19.41300000
+ 175 59 1 -1.1128       6.83600000      21.32900000      23.19899999
+ 176 59 2 0.5564        8.24900001      20.84799999      22.32000001
+ 177 59 2 0.5564        5.66800001      21.84099999      21.88600000
+ 178 60 1 -1.1128       4.60399999      15.64900000      30.04300000
+ 179 60 2 0.5564        6.45300001      15.21699999      30.20700000
+ 180 60 2 0.5564        3.82200001      14.76199999      31.56200000
+ 181 61 1 -1.1128       7.12500000      19.97600001       9.42100001
+ 182 61 2 0.5564        5.91800000      20.45300001      10.72999999
+ 183 61 2 0.5564        8.09899999      21.49600001       9.49100000
+ 184 62 1 -1.1128       9.06299999      25.91200001      13.18600000
+ 185 62 2 0.5564       10.34999999      26.57199999      12.36700001
+ 186 62 2 0.5564        9.67999999      24.36700001      13.69700001
+ 187 63 1 -1.1128       8.02200000      22.34299999      17.04199999
+ 188 63 2 0.5564        9.14400000      23.36700001      18.07399999
+ 189 63 2 0.5564        6.56200000      23.46200000      16.85199999
+ 190 64 1 -1.1128      10.76199999      26.28499999      19.96299999
+ 191 64 2 0.5564       11.03600000      27.96599999      20.53800000
+ 192 64 2 0.5564       11.07800000      25.40100000      21.45600000
+ 193 65 1 -1.1128       9.15800000      22.90199999      28.39100000
+ 194 65 2 0.5564        8.21900000      23.52800001      27.08499999
+ 195 65 2 0.5564        8.08900000      21.76000000      29.50900000
+ 196 66 1 -1.1128       6.21900000      20.15800000      31.92100000
+ 197 66 2 0.5564        5.63500000      18.51099999      31.16100000
+ 198 66 2 0.5564        7.53000000      19.62400000      33.07100000
+ 199 67 1 -1.1128      11.19100001      31.50900000       2.61700000
+ 200 67 2 0.5564       10.46000001      32.21399999       4.10800000
+ 201 67 2 0.5564       13.17600000      31.75099999       2.57700000
+ 202 68 1 -1.1128       4.74799999       0.05500001       8.60500000
+ 203 68 2 0.5564        5.38000000       0.51700000      10.18300000
+ 204 68 2 0.5564        6.05000000      -0.30600001       7.48000000
+ 205 69 1 -1.1128       8.69500000      30.80899999      15.73100000
+ 206 69 2 0.5564        9.18899999      32.10300000      14.49500000
+ 207 69 2 0.5564        8.44699999      29.06900000      14.86800000
+ 208 70 1 -1.1128      10.12799999      31.40200000      20.76599999
+ 209 70 2 0.5564        9.45600000      30.90500001      19.15500000
+ 210 70 2 0.5564        9.01999999      32.73100000      21.41500000
+ 211 71 1 -1.1128      12.23800001      30.16200000      25.83699999
+ 212 71 2 0.5564       11.41799999      30.90800001      27.10999999
+ 213 71 2 0.5564       12.39600001      31.33100001      24.67800000
+ 214 72 1 -1.1128      10.39500000      32.53700000      30.62400000
+ 215 72 2 0.5564       11.04199999      34.33899999      30.75099999
+ 216 72 2 0.5564       11.37800001      31.48599999      31.53800000
+ 217 73 1 -1.1128      10.43800000       3.62599999       5.08700001
+ 218 73 2 0.5564       12.43500001       4.08200000       5.13600000
+ 219 73 2 0.5564        9.82200001       4.28400000       6.68100000
+ 220 74 1 -1.1128      14.76199999       3.40100000      13.77599999
+ 221 74 2 0.5564       16.51799999       3.82400000      13.37600000
+ 222 74 2 0.5564       13.75200000       4.75700000      12.96400000
+ 223 75 1 -1.1128      12.38199999       1.01200001      17.64300001
+ 224 75 2 0.5564       13.34599999       1.99700000      16.44400000
+ 225 75 2 0.5564       11.93100000       2.13300000      18.99800001
+ 226 76 1 -1.1128      15.27799999       1.29300000      24.55900000
+ 227 76 2 0.5564       16.07100000       0.94600000      26.36500000
+ 228 76 2 0.5564       15.79399999       0.19899999      23.49900000
+ 229 77 1 -1.1128      22.22600000      31.62700000      24.71199999
+ 230 77 2 0.5564       23.33800001      32.59500000      23.87600001
+ 231 77 2 0.5564       22.16100000      30.05300000      24.13200000
+ 232 78 1 -1.1128      15.63999999       1.84700001      32.71700000
+ 233 78 2 0.5564       17.48800000       2.47300000      31.87400000
+ 234 78 2 0.5564       16.40300001       0.86900001      34.26700001
+ 235 79 1 -1.1128      14.85800001      10.19899999       2.75400001
+ 236 79 2 0.5564       13.36000001      10.71199999       2.28199999
+ 237 79 2 0.5564       14.56000000       9.31600000       4.55900000
+ 238 80 1 -1.1128      15.71700000       8.46900000      10.73900000
+ 239 80 2 0.5564       17.32300000       9.58100000      10.87500000
+ 240 80 2 0.5564       14.57400000       9.63100000      10.22099999
+ 241 81 1 -1.1128      15.24800000      10.39800000      16.52500001
+ 242 81 2 0.5564       16.32400001       9.18100001      16.14899999
+ 243 81 2 0.5564       14.17200000      10.48800000      15.09800001
+ 244 82 1 -1.1128      13.22600000       8.43800000      20.80100001
+ 245 82 2 0.5564       14.04300000       8.99600000      19.29500001
+ 246 82 2 0.5564       14.66100001       7.80200000      22.09300000
+ 247 83 1 -1.1128      10.17300001      10.96100000      25.87500000
+ 248 83 2 0.5564       11.47700000      10.22300000      26.94000000
+ 249 83 2 0.5564       11.26900000      10.73800000      24.34299999
+ 250 84 1 -1.1128      12.79200000       7.73699999      29.17300001
+ 251 84 2 0.5564       12.19899999       6.03799999      29.47499999
+ 252 84 2 0.5564       14.42700000       7.44999999      29.61700000
+ 253 85 1 -1.1128      15.18000000      19.49800000       3.57800000
+ 254 85 2 0.5564       14.88300001      17.59600001       4.08000001
+ 255 85 2 0.5564       16.75400001      19.57899999       2.62599999
+ 256 86 1 -1.1128      12.51700000      11.09300000       7.70099999
+ 257 86 2 0.5564       12.22400001      12.77800000       7.55500000
+ 258 86 2 0.5564       11.15000000      10.39299999       7.05700000
+ 259 87 1 -1.1128      16.26600000      16.27099999      10.75800001
+ 260 87 2 0.5564       16.50700001      15.79500000      12.76800001
+ 261 87 2 0.5564       17.72500001      16.97699999      10.29200001
+ 262 88 1 -1.1128      14.06900000      18.39900001      18.89700000
+ 263 88 2 0.5564       15.51300000      17.52300000      18.15500000
+ 264 88 2 0.5564       14.95800001      18.70900000      20.67300000
+ 265 89 1 -1.1128      14.09899999      15.48000000      25.51000001
+ 266 89 2 0.5564       13.69800000      16.87200001      26.93799999
+ 267 89 2 0.5564       12.56700000      15.37900000      24.44400000
+ 268 90 1 -1.1128      13.30900000      17.57400000      30.29200001
+ 269 90 2 0.5564       14.93700001      16.93399999      30.81000000
+ 270 90 2 0.5564       13.96900001      19.49400000      30.01200001
+ 271 91 1 -1.1128      18.37099999      23.25699999       0.92500000
+ 272 91 2 0.5564       19.47899999      23.48000000       2.32099999
+ 273 91 2 0.5564       19.08700001      24.32499999      -0.36900000
+ 274 92 1 -1.1128      12.10000000      21.72999999      11.35500000
+ 275 92 2 0.5564       13.14100001      22.28700000      12.74300001
+ 276 92 2 0.5564       13.46700001      22.23600000      10.24400000
+ 277 93 1 -1.1128      12.16300001      23.29000000      23.59699999
+ 278 93 2 0.5564       11.32400001      22.73600001      24.94900000
+ 279 93 2 0.5564       13.88200000      22.87200001      23.84000001
+ 280 94 1 -1.1128      20.17300001      26.76100001      22.62800000
+ 281 94 2 0.5564       20.20600001      26.53200001      20.79200000
+ 282 94 2 0.5564       21.55600000      25.74200000      23.38899999
+ 283 95 1 -1.1128      16.70099999      21.16500000      22.60500000
+ 284 95 2 0.5564       18.02800000      20.68600001      23.84799999
+ 285 95 2 0.5564       17.10400000      22.86599999      21.94900000
+ 286 96 1 -1.1128      11.39100000      26.46099999      33.70499999
+ 287 96 2 0.5564        9.84099999      27.19199999      34.04800001
+ 288 96 2 0.5564       11.77599999      25.53999999      35.24300000
+ 289 97 1 -1.1128       9.89799999      25.98900000       4.55300001
+ 290 97 2 0.5564        8.90199999      26.13099999       6.03900000
+ 291 97 2 0.5564       10.28700000      27.80600000       4.37600000
+ 292 98 1 -1.1128      14.30800000      26.96000000      10.87699999
+ 293 98 2 0.5564       15.30200000      27.40500000      12.17300001
+ 294 98 2 0.5564       15.46300000      26.15100000       9.63299999
+ 295 99 1 -1.1128      13.43300000      22.96000000      16.90400000
+ 296 99 2 0.5564       13.40900000      24.13099999      18.13200000
+ 297 99 2 0.5564       13.62400000      21.19100001      17.52000000
+ 298 100 1 -1.1128      16.40900000      26.76800001      26.87500000
+ 299 100 2 0.5564       17.58999999      26.98700001      25.43100000
+ 300 100 2 0.5564       14.75099999      27.70300000      26.23000000
+ 301 101 1 -1.1128      14.40500000      22.73299999      29.89200000
+ 302 101 2 0.5564       15.42300000      23.07900000      28.49400000
+ 303 101 2 0.5564       12.82600001      23.25900000      29.41600000
+ 304 102 1 -1.1128       6.90500001      29.40800000       0.74900000
+ 305 102 2 0.5564        8.42800001      30.48300000       1.56700000
+ 306 102 2 0.5564        6.35300001      30.81400000      -0.44400000
+ 307 103 1 -1.1128       9.18899999      34.15900001       6.50900000
+ 308 103 2 0.5564       10.19800000      34.19300000       8.00199999
+ 309 103 2 0.5564        9.89000001      35.69200000       5.78500000
+ 310 104 1 -1.1128      14.25600001      32.31600000       9.36900000
+ 311 104 2 0.5564       15.73299999      32.86700000       9.48599999
+ 312 104 2 0.5564       14.75400001      30.67000000      10.09000000
+ 313 105 1 -1.1128      14.71400000      30.84099999      16.51600000
+ 314 105 2 0.5564       13.74799999      29.55099999      17.27900000
+ 315 105 2 0.5564       13.21800000      31.93300001      16.61400001
+ 316 106 1 -1.1128      18.40900000      33.64100000      20.61100001
+ 317 106 2 0.5564       19.60099999      32.27400001      21.11500000
+ 318 106 2 0.5564       17.36000001      32.65500000      19.51799999
+ 319 107 1 -1.1128      16.06200001      28.63800000      32.20700000
+ 320 107 2 0.5564       14.64800000      27.95800001      33.25299999
+ 321 107 2 0.5564       15.75200000      28.01400000      30.52199999
+ 322 108 1 -1.1128      16.20000000      30.89499999       1.47300000
+ 323 108 2 0.5564       16.62599999      29.96800000      -0.13000001
+ 324 108 2 0.5564       17.16699999      29.83300001       2.92699999
+ 325 109 1 -1.1128      20.27799999       3.52899999       6.04800001
+ 326 109 2 0.5564       20.97699999       3.61100001       4.57500001
+ 327 109 2 0.5564       21.31200000       4.51300000       7.25100000
+ 328 110 1 -1.1128      23.07900000       5.77800000      10.40800000
+ 329 110 2 0.5564       24.65000001       6.25900000      10.83800000
+ 330 110 2 0.5564       22.34200001       7.60900000      10.17799999
+ 331 111 1 -1.1128      19.58100000       2.03099999      12.10999999
+ 332 111 2 0.5564       19.03900000       1.08200000      10.44000000
+ 333 111 2 0.5564       21.14100001       2.99100001      11.85100001
+ 334 112 1 -1.1128      22.00500001       3.22300000      23.17799999
+ 335 112 2 0.5564       21.42899999       4.09000000      24.55399999
+ 336 112 2 0.5564       20.65400001       1.79099999      22.71100001
+ 337 113 1 -1.1128      16.63000000       6.42200000      23.79200000
+ 338 113 2 0.5564       16.21900000       4.80400001      24.40600001
+ 339 113 2 0.5564       17.06600001       7.12799999      25.28199999
+ 340 114 1 -1.1128      21.67599999       5.56400001      28.15800000
+ 341 114 2 0.5564       20.65799999       6.71700000      29.18499999
+ 342 114 2 0.5564       23.41300000       5.82800000      28.99600000
+ 343 115 1 -1.1128      15.25699999       5.26500000       5.62599999
+ 344 115 2 0.5564       16.91400000       4.51900000       5.48999999
+ 345 115 2 0.5564       15.14400000       6.15000000       6.97200000
+ 346 116 1 -1.1128      20.13700000      11.08200000      10.43700000
+ 347 116 2 0.5564       20.02100000      10.94700000       8.73299999
+ 348 116 2 0.5564       21.02500000      12.55500000      10.85300000
+ 349 117 1 -1.1128      23.08900000      14.62700000      12.43700000
+ 350 117 2 0.5564       24.71600000      15.25400000      12.73600001
+ 351 117 2 0.5564       23.28400000      13.22799999      13.65300000
+ 352 118 1 -1.1128      24.08300000      12.64900000      22.56600000
+ 353 118 2 0.5564       22.39700000      12.66300000      23.04199999
+ 354 118 2 0.5564       24.90100001      13.85100001      23.56499999
+ 355 119 1 -1.1128      17.86500001       7.90899999      30.03600000
+ 356 119 2 0.5564       17.50900000       8.04499999      31.98200000
+ 357 119 2 0.5564       18.07800000       9.58200001      29.31799999
+ 358 120 1 -1.1128      18.82400000       8.48599999       0.10400000
+ 359 120 2 0.5564       19.99700000      10.19100001      -0.05700000
+ 360 120 2 0.5564       17.07700001       8.99800001       0.77900001
+ 361 121 1 -1.1128      20.12200000       9.14300000       5.34299999
+ 362 121 2 0.5564       19.37300000       8.81899999       3.82100000
+ 363 121 2 0.5564       21.99800001       8.77599999       5.12799999
+ 364 122 1 -1.1128      16.41300000      14.45900000       5.85499999
+ 365 122 2 0.5564       15.53599999      13.00700000       5.23899999
+ 366 122 2 0.5564       16.00599999      14.72500001       7.73699999
+ 367 123 1 -1.1128      17.56099999      15.06600001      15.65400001
+ 368 123 2 0.5564       17.57500001      13.39800000      16.05500001
+ 369 123 2 0.5564       18.97800000      15.82800000      16.39999999
+ 370 124 1 -1.1128      26.37400001      17.04700000      24.81700000
+ 371 124 2 0.5564       27.98300000      17.09800001      25.63200001
+ 372 124 2 0.5564       25.62900001      18.75099999      24.91900001
+ 373 125 1 -1.1128      19.78400000      12.96000000      28.70600000
+ 374 125 2 0.5564       21.66199999      13.05500001      28.87100000
+ 375 125 2 0.5564       19.54500000      14.06999999      27.14300000
+ 376 126 1 -1.1128      17.89099999      16.73299999      32.49900000
+ 377 126 2 0.5564       18.32700000      15.24000000      31.27700001
+ 378 126 2 0.5564       18.63299999      18.33500001      31.69300001
+ 379 127 1 -1.1128      23.73299999      23.02399999       1.66300000
+ 380 127 2 0.5564       24.80000000      24.05199999       2.77599999
+ 381 127 2 0.5564       24.69300001      22.61800001       0.19800000
+ 382 128 1 -1.1128      20.78900000      18.44000000       9.44299999
+ 383 128 2 0.5564       20.76599999      17.25699999       7.88100000
+ 384 128 2 0.5564       21.89600000      17.34500000      10.38500001
+ 385 129 1 -1.1128      21.57400000      17.49299999      17.83800000
+ 386 129 2 0.5564       20.59699999      18.95500001      17.21800000
+ 387 129 2 0.5564       22.53800000      16.87400000      16.25100000
+ 388 130 1 -1.1128      19.16800000      14.74799999      24.13099999
+ 389 130 2 0.5564       19.71100001      16.39000000      23.71199999
+ 390 130 2 0.5564       17.42899999      14.69500000      24.40300001
+ 391 131 1 -1.1128      22.14899999      20.19800000      24.97699999
+ 392 131 2 0.5564       21.63900001      20.92400000      26.48599999
+ 393 131 2 0.5564       22.65600000      21.65700001      24.41099999
+ 394 132 1 -1.1128      20.56499999      20.79200000      29.60000001
+ 395 132 2 0.5564       22.26399999      20.40900000      30.21399999
+ 396 132 2 0.5564       20.54800000      22.40800000      30.59699999
+ 397 133 1 -1.1128      20.80200000      26.54699999       9.61499999
+ 398 133 2 0.5564       20.09899999      27.98399999       8.33800001
+ 399 133 2 0.5564       21.27700001      27.53900001      11.32499999
+ 400 134 1 -1.1128      16.28300000      23.58900001       7.77900001
+ 401 134 2 0.5564       16.09300000      21.97300001       6.71199999
+ 402 134 2 0.5564       17.90100001      22.97100000       8.15400000
+ 403 135 1 -1.1128      18.46900000      29.79799999      13.56800001
+ 404 135 2 0.5564       19.71199999      31.21600000      13.50600000
+ 405 135 2 0.5564       16.87200001      30.34299999      14.39600001
+ 406 136 1 -1.1128      18.79000001      21.71199999      16.06000000
+ 407 136 2 0.5564       19.87800000      23.09000000      16.48500001
+ 408 136 2 0.5564       17.20100000      22.32600000      15.81899999
+ 409 137 1 -1.1128      21.74700001      26.08400001      16.34900001
+ 410 137 2 0.5564       20.78300001      27.02100000      15.29999999
+ 411 137 2 0.5564       22.70499999      27.32799999      17.20600001
+ 412 138 1 -1.1128      20.76899999      26.21100000      32.05000000
+ 413 138 2 0.5564       21.48800000      27.40399999      33.32799999
+ 414 138 2 0.5564       18.98900000      26.71000000      32.14500001
+ 415 139 1 -1.1128      19.82000000      29.18100001       5.55900000
+ 416 139 2 0.5564       20.99100001      29.50900000       4.10900001
+ 417 139 2 0.5564       19.43100000      31.01800000       6.22099999
+ 418 140 1 -1.1128      19.24000000      33.86700000       7.99300000
+ 419 140 2 0.5564       19.10700000      35.03900000       6.60399999
+ 420 140 2 0.5564       20.69700001      33.67100000       9.06299999
+ 421 141 1 -1.1128      22.51099999      34.97600001      15.79300000
+ 422 141 2 0.5564       23.71600000      36.16300001      16.60300000
+ 423 141 2 0.5564       21.69900000      36.15000000      14.46700001
+ 424 142 1 -1.1128      22.62199999      30.28400000      19.06900000
+ 425 142 2 0.5564       22.04899999      31.35100000      17.72500001
+ 426 142 2 0.5564       24.41099999      30.77299999      19.57599999
+ 427 143 1 -1.1128      18.63900001      33.61100001      28.36900000
+ 428 143 2 0.5564       18.22600000      32.15900001      29.10300000
+ 429 143 2 0.5564       19.90600000      33.00800000      27.15800000
+ 430 144 1 -1.1128      22.52000000       1.32499999      31.92600001
+ 431 144 2 0.5564       22.80300000       2.66800001      30.79600000
+ 432 144 2 0.5564       21.04499999       0.42499999      31.12200000
+ 433 145 1 -1.1128      21.75400001       3.78900000       1.15900001
+ 434 145 2 0.5564       22.08499999       2.78500000      -0.18000000
+ 435 145 2 0.5564       20.85000000       5.17500000       0.61000000
+ 436 146 1 -1.1128      28.45699999       5.53900001      12.13300000
+ 437 146 2 0.5564       29.48900001       4.39000000      11.18200000
+ 438 146 2 0.5564       29.16100000       7.13099999      12.58700000
+ 439 147 1 -1.1128      22.49500000       5.96599999      17.32400001
+ 440 147 2 0.5564       24.37700000       5.37900000      17.39299999
+ 441 147 2 0.5564       21.90600000       5.49100000      18.85700000
+ 442 148 1 -1.1128      28.12799999       3.30400000      22.28700000
+ 443 148 2 0.5564       28.12300001       2.99899999      20.49100000
+ 444 148 2 0.5564       26.53299999       3.35500000      22.87600001
+ 445 149 1 -1.1128      28.37800001      10.45500000      27.26600000
+ 446 149 2 0.5564       30.01900001      10.29200001      28.05100000
+ 447 149 2 0.5564       28.63500000      10.03900000      25.46300000
+ 448 150 1 -1.1128      27.03099999       8.35300001      34.80600000
+ 449 150 2 0.5564       26.11600001       9.98399999      34.57100001
+ 450 150 2 0.5564       28.68500000       8.95100001      34.73900000
+ 451 151 1 -1.1128      24.95100001       8.15999999       4.45399999
+ 452 151 2 0.5564       25.93000001       9.61600000       5.15999999
+ 453 151 2 0.5564       25.94700000       7.99400001       2.72400000
+ 454 152 1 -1.1128      26.93700001      12.43599999       6.86900001
+ 455 152 2 0.5564       25.49200001      13.28400000       6.70799999
+ 456 152 2 0.5564       27.68900000      13.33199999       8.26600000
+ 457 153 1 -1.1128      23.36500000      11.21399999      16.93300001
+ 458 153 2 0.5564       22.24700000       9.74399999      16.78900000
+ 459 153 2 0.5564       23.26399999      12.03500000      18.53900001
+ 460 154 1 -1.1128      28.32099999       8.75900000      22.15800000
+ 461 154 2 0.5564       27.66199999       6.89499999      22.48200001
+ 462 154 2 0.5564       26.97100000       9.71000000      21.90199999
+ 463 155 1 -1.1128      27.07100000       6.10900001      29.55500000
+ 464 155 2 0.5564       27.59100000       7.66300000      28.85700000
+ 465 155 2 0.5564       27.30400000       6.32000001      31.26100000
+ 466 156 1 -1.1128      22.47400000      11.70400001      34.63999999
+ 467 156 2 0.5564       22.75200000      13.30400000      35.58400000
+ 468 156 2 0.5564       22.84000001      12.09000000      33.03000001
+ 469 157 1 -1.1128      21.65600000      14.97100000       5.61499999
+ 470 157 2 0.5564       21.68999999      15.86000000       3.97699999
+ 471 157 2 0.5564       19.96400000      14.22500000       5.77400000
+ 472 158 1 -1.1128      28.53900001      21.49200001       9.82000000
+ 473 158 2 0.5564       27.28800001      22.18100001       8.68800000
+ 474 158 2 0.5564       28.06500000      22.42000000      11.60200000
+ 475 159 1 -1.1128      28.36399999      16.01999999      11.10900001
+ 476 159 2 0.5564       30.03300000      16.64900000      12.08900000
+ 477 159 2 0.5564       28.45600000      17.44000000      10.08200000
+ 478 160 1 -1.1128       0.05400000      13.68600001      18.10300000
+ 479 160 2 0.5564       -1.71400000      12.92800000      18.84099999
+ 480 160 2 0.5564        1.00800000      12.42899999      17.38300000
+ 481 161 1 -1.1128      24.63600001      12.89400001      29.95700000
+ 482 161 2 0.5564       25.90600000      13.91400000      31.18300000
+ 483 161 2 0.5564       25.64100000      11.60900000      29.16200000
+ 484 162 1 -1.1128      21.54800000      17.25000000       0.74900000
+ 485 162 2 0.5564       21.84300000      19.02600000       0.90500001
+ 486 162 2 0.5564       20.38500001      16.71600000      -0.69700001
+ 487 163 1 -1.1128      26.09499999      27.27400001       4.52000000
+ 488 163 2 0.5564       27.88900000      26.45800000       4.50500000
+ 489 163 2 0.5564       25.64800000      26.96999999       6.16500000
+ 490 164 1 -1.1128      23.61000000      22.51499999       8.00800000
+ 491 164 2 0.5564       22.65300000      21.18700000       8.73900000
+ 492 164 2 0.5564       22.28600000      24.09499999       8.44400000
+ 493 165 1 -1.1128      27.35500000      18.92900000      18.18000000
+ 494 165 2 0.5564       27.20000000      20.34900001      17.15500000
+ 495 165 2 0.5564       25.57899999      18.32200000      18.77000000
+ 496 166 1 -1.1128      26.76500001      23.63299999      14.44400000
+ 497 166 2 0.5564       27.44100000      25.29800000      13.65099999
+ 498 166 2 0.5564       25.08600000      24.25600001      14.74900000
+ 499 167 1 -1.1128      31.47800001      20.76899999      20.98600000
+ 500 167 2 0.5564       30.44000000      22.50900000      21.13499999
+ 501 167 2 0.5564       30.56700000      19.65600000      20.04300000
+ 502 168 1 -1.1128      24.81199999      20.41200000      32.66800001
+ 503 168 2 0.5564       26.24199999      21.47800001      31.87400000
+ 504 168 2 0.5564       25.78699999      19.02300001      33.15800000
+ 505 169 1 -1.1128      22.10500001      29.07600000       0.92800000
+ 506 169 2 0.5564       23.29599999      27.92299999       1.73900000
+ 507 169 2 0.5564       22.62300000      30.99400001       0.88200000
+ 508 170 1 -1.1128      29.57199999      31.25600001       8.62599999
+ 509 170 2 0.5564       30.79500000      30.20299999       7.73600001
+ 510 170 2 0.5564       28.27700001      31.51900000       7.25999999
+ 511 171 1 -1.1128      31.81700000      34.84300000      18.28300000
+ 512 171 2 0.5564       32.43800000      34.38899999      16.47400000
+ 513 171 2 0.5564       32.74300001      36.42200000      18.34100000
+ 514 172 1 -1.1128      27.91500001      25.60099999      19.03300000
+ 515 172 2 0.5564       29.35800000      26.56099999      19.19000000
+ 516 172 2 0.5564       28.14800001      24.42899999      17.53000000
+ 517 173 1 -1.1128      24.54800000      24.65400001      24.02500000
+ 518 173 2 0.5564       25.52800001      25.63500000      22.82400000
+ 519 173 2 0.5564       25.29999999      25.20000000      25.64500000
+ 520 174 1 -1.1128      28.53999999      22.92200000      30.37000000
+ 521 174 2 0.5564       27.41399999      24.09600000      29.78100000
+ 522 174 2 0.5564       29.67400000      23.91400000      31.87299999
+ 523 175 1 -1.1128      24.96900001      33.62300000       1.01400000
+ 524 175 2 0.5564       26.52100001      33.05800000       1.51799999
+ 525 175 2 0.5564       24.99000000      34.32200000      -0.68299999
+ 526 176 1 -1.1128      23.07500000      32.17099999      11.32400001
+ 527 176 2 0.5564       23.31600000      32.77500000      13.09700000
+ 528 176 2 0.5564       24.46000001      33.20299999      10.66199999
+ 529 177 1 -1.1128      27.49699999       2.73600001      17.22400001
+ 530 177 2 0.5564       28.39700000       3.41500000      15.71500001
+ 531 177 2 0.5564       28.23400001       1.23300000      17.41200000
+ 532 178 1 -1.1128      26.36900000      33.06000000      22.07700001
+ 533 178 2 0.5564       26.17000001      34.74600000      22.26399999
+ 534 178 2 0.5564       27.59200000      32.40399999      23.32099999
+ 535 179 1 -1.1128      30.22099999      30.95000000      25.84300000
+ 536 179 2 0.5564       30.30500000      29.03799999      26.20800000
+ 537 179 2 0.5564       30.36300001      31.97900000      27.41399999
+ 538 180 1 -1.1128      24.97300001      26.73200000      28.60700001
+ 539 180 2 0.5564       25.38500001      28.36900000      29.24800000
+ 540 180 2 0.5564       23.33000000      26.59699999      29.23400001
+ 541 181 1 -1.1128      32.16500000       4.85700000       2.25800000
+ 542 181 2 0.5564       32.41700001       6.19500001       1.15700000
+ 543 181 2 0.5564       32.61499999       3.72700000       1.11200000
+ 544 182 1 -1.1128      28.06699999       3.53299999       5.21699999
+ 545 182 2 0.5564       26.96000000       4.44699999       4.15800000
+ 546 182 2 0.5564       29.87500000       3.86300000       4.44800000
+ 547 183 1 -1.1128      33.27900000       2.78200000      13.02800000
+ 548 183 2 0.5564       33.70799999       3.95500001      11.81700000
+ 549 183 2 0.5564       33.65600000       3.54500000      14.63100000
+ 550 184 1 -1.1128      34.27799999       4.94400001      17.49200001
+ 551 184 2 0.5564       33.43800000       6.56300000      17.87600001
+ 552 184 2 0.5564       34.90600000       4.45200000      18.99499999
+ 553 185 1 -1.1128      32.36300001       1.90800001      26.09199999
+ 554 185 2 0.5564       31.94099999       1.68299999      24.26800000
+ 555 185 2 0.5564       33.85000000       1.39000000      26.90400000
+ 556 186 1 -1.1128      27.98200000       0.41799999      28.24100000
+ 557 186 2 0.5564       27.51600000       2.08000001      28.30900000
+ 558 186 2 0.5564       29.59300001       0.17600000      27.29900001
+ 559 187 1 -1.1128      28.84500000      14.67200001       2.72400000
+ 560 187 2 0.5564       27.96299999      13.93000001       4.13900000
+ 561 187 2 0.5564       30.38599999      15.71400000       3.37900000
+ 562 188 1 -1.1128      28.08300000      10.61800001      14.29800000
+ 563 188 2 0.5564       28.62300000      12.15999999      13.29300000
+ 564 188 2 0.5564       26.48599999      11.01500000      15.37900000
+ 565 189 1 -1.1128      33.86700000      10.54500000      13.30600001
+ 566 189 2 0.5564       35.16500000       9.61200000      13.81000000
+ 567 189 2 0.5564       33.61499999      10.27000001      11.51300000
+ 568 190 1 -1.1128      31.79000001       9.69600000      18.22300000
+ 569 190 2 0.5564       30.48400000       9.33400000      19.42100001
+ 570 190 2 0.5564       30.83399999      10.09600000      16.92900000
+ 571 191 1 -1.1128      30.14100001      15.00599999      21.53200001
+ 572 191 2 0.5564       28.56499999      15.59399999      22.09899999
+ 573 191 2 0.5564       30.94200000      14.25299999      23.07700001
+ 574 192 1 -1.1128      32.79799999      10.73200000      30.67999999
+ 575 192 2 0.5564       34.07300001       9.52800001      30.79900000
+ 576 192 2 0.5564       32.99100001      11.51200000      28.98300000
+ 577 193 1 -1.1128      33.65200000      16.26500000       5.08600000
+ 578 193 2 0.5564       35.39900001      16.23899999       4.72999999
+ 579 193 2 0.5564       33.50300001      17.93900000       5.63100000
+ 580 194 1 -1.1128      31.94700000      10.79900000       7.94300000
+ 581 194 2 0.5564       29.89400001      10.54900000       7.61899999
+ 582 194 2 0.5564       32.27099999      12.41399999       7.07500000
+ 583 195 1 -1.1128       0.32900000      15.51600000      11.74600000
+ 584 195 2 0.5564       -0.44600001      14.24900001      12.93900000
+ 585 195 2 0.5564       -0.68500000      17.01800000      11.93500000
+ 586 196 1 -1.1128       4.26200000      19.16500000      14.30800000
+ 587 196 2 0.5564        3.57899999      17.69100000      14.91999999
+ 588 196 2 0.5564        5.72299999      19.18300000      15.20400000
+ 589 197 1 -1.1128      32.99499999      13.54600001      25.94800001
+ 590 197 2 0.5564       32.16699999      15.06000000      26.78699999
+ 591 197 2 0.5564       34.42499999      13.80000000      25.00700000
+ 592 198 1 -1.1128       1.77299999      13.52400000      34.03700001
+ 593 198 2 0.5564        0.22700001      14.40900000      33.44600001
+ 594 198 2 0.5564        2.16699999      14.67000000      35.51099999
+ 595 199 1 -1.1128      33.02900000      20.52899999       7.24700000
+ 596 199 2 0.5564       34.38800000      21.41399999       8.00300000
+ 597 199 2 0.5564       31.45100000      20.83100000       8.18200000
+ 598 200 1 -1.1128       2.03700001      24.25000000      10.25100000
+ 599 200 2 0.5564        3.74300001      25.00800000       9.87600001
+ 600 200 2 0.5564        1.89400001      25.04300000      11.90300000
+ 601 201 1 -1.1128      32.75300000      19.25900000      13.97600001
+ 602 201 2 0.5564       32.79200000      20.88600000      13.79200000
+ 603 201 2 0.5564       34.33400000      18.79900000      14.97600001
+ 604 202 1 -1.1128       0.39600001      18.67300000      18.69900000
+ 605 202 2 0.5564       -1.21100000      18.95000000      19.12700001
+ 606 202 2 0.5564        0.46900000      16.97699999      18.43599999
+ 607 203 1 -1.1128      30.85499999      18.37000000      27.95899999
+ 608 203 2 0.5564       29.75900000      19.68100000      28.68999999
+ 609 203 2 0.5564       32.10300000      19.47700000      26.76300000
+ 610 204 1 -1.1128      27.72299999      15.99200000      33.09100001
+ 611 204 2 0.5564       29.39000000      16.42300000      32.19199999
+ 612 204 2 0.5564       27.80100001      15.85899999      34.80400001
+ 613 205 1 -1.1128      31.06800000      27.89499999       3.34800000
+ 614 205 2 0.5564       32.51700000      27.82500000       4.61000000
+ 615 205 2 0.5564       31.52899999      29.45900000       2.32400001
+ 616 206 1 -1.1128      35.03900000      28.00800000       6.66300000
+ 617 206 2 0.5564       35.96599999      26.93399999       7.68299999
+ 618 206 2 0.5564       36.05500001      28.33600000       5.33600000
+ 619 207 1 -1.1128      29.35600001      28.19599999      13.02500000
+ 620 207 2 0.5564       29.20999999      29.33500001      14.58900001
+ 621 207 2 0.5564       28.87400000      29.62900001      11.86700000
+ 622 208 1 -1.1128      32.38599999      28.43400000      18.96100000
+ 623 208 2 0.5564       33.36799999      28.57400000      20.41099999
+ 624 208 2 0.5564       33.41000001      27.40600001      17.94900000
+ 625 209 1 -1.1128      30.89799999      25.39000000      25.79900000
+ 626 209 2 0.5564       32.36900000      25.91299999      24.58000000
+ 627 209 2 0.5564       31.31700001      24.07500000      27.02900000
+ 628 210 1 -1.1128      32.25900000      25.61100001      33.10400000
+ 629 210 2 0.5564       32.23800001      25.73600001      34.80600000
+ 630 210 2 0.5564       33.91999999      25.04199999      32.77500000
+ 631 211 1 -1.1128      30.29000000      32.64500000       1.34100000
+ 632 211 2 0.5564       29.94900000      32.79300000      -0.43000000
+ 633 211 2 0.5564       31.76199999      33.34000000       1.84700001
+ 634 212 1 -1.1128      25.53599999      34.23499999       6.46900000
+ 635 212 2 0.5564       25.71600000      36.05900001       6.65099999
+ 636 212 2 0.5564       25.28300000      33.86599999       4.89499999
+ 637 213 1 -1.1128      31.67400000      33.16100000      13.10599999
+ 638 213 2 0.5564       31.79300000      34.86300000      13.28100001
+ 639 213 2 0.5564       30.42499999      32.92800000      11.78300001
+ 640 214 1 -1.1128      33.84400001      32.66800001      22.29599999
+ 641 214 2 0.5564       32.75000000      32.23400001      23.52400000
+ 642 214 2 0.5564       32.91700000      32.87500000      20.73600001
+ 643 215 1 -1.1128      31.60300000      30.54200000      30.80499999
+ 644 215 2 0.5564       33.45100000      30.80400001      30.46799999
+ 645 215 2 0.5564       31.57500001      28.81599999      31.75600000
+ 646 216 1 -1.1128      26.29500001      31.23499999      30.59900000
+ 647 216 2 0.5564       27.83399999      30.51499999      30.60700001
+ 648 216 2 0.5564       26.36200000      32.91999999      29.85600000
+
+Bonds
+
+ 1 1 1 2
+ 2 1 1 3
+ 3 1 4 5
+ 4 1 4 6
+ 5 1 7 8
+ 6 1 7 9
+ 7 1 10 11
+ 8 1 10 12
+ 9 1 13 14
+ 10 1 13 15
+ 11 1 16 17
+ 12 1 16 18
+ 13 1 19 20
+ 14 1 19 21
+ 15 1 22 23
+ 16 1 22 24
+ 17 1 25 26
+ 18 1 25 27
+ 19 1 28 29
+ 20 1 28 30
+ 21 1 31 32
+ 22 1 31 33
+ 23 1 34 35
+ 24 1 34 36
+ 25 1 37 38
+ 26 1 37 39
+ 27 1 40 41
+ 28 1 40 42
+ 29 1 43 44
+ 30 1 43 45
+ 31 1 46 47
+ 32 1 46 48
+ 33 1 49 50
+ 34 1 49 51
+ 35 1 52 53
+ 36 1 52 54
+ 37 1 55 56
+ 38 1 55 57
+ 39 1 58 59
+ 40 1 58 60
+ 41 1 61 62
+ 42 1 61 63
+ 43 1 64 65
+ 44 1 64 66
+ 45 1 67 68
+ 46 1 67 69
+ 47 1 70 71
+ 48 1 70 72
+ 49 1 73 74
+ 50 1 73 75
+ 51 1 76 77
+ 52 1 76 78
+ 53 1 79 80
+ 54 1 79 81
+ 55 1 82 83
+ 56 1 82 84
+ 57 1 85 86
+ 58 1 85 87
+ 59 1 88 89
+ 60 1 88 90
+ 61 1 91 92
+ 62 1 91 93
+ 63 1 94 95
+ 64 1 94 96
+ 65 1 97 98
+ 66 1 97 99
+ 67 1 100 101
+ 68 1 100 102
+ 69 1 103 104
+ 70 1 103 105
+ 71 1 106 107
+ 72 1 106 108
+ 73 1 109 110
+ 74 1 109 111
+ 75 1 112 113
+ 76 1 112 114
+ 77 1 115 116
+ 78 1 115 117
+ 79 1 118 119
+ 80 1 118 120
+ 81 1 121 122
+ 82 1 121 123
+ 83 1 124 125
+ 84 1 124 126
+ 85 1 127 128
+ 86 1 127 129
+ 87 1 130 131
+ 88 1 130 132
+ 89 1 133 134
+ 90 1 133 135
+ 91 1 136 137
+ 92 1 136 138
+ 93 1 139 140
+ 94 1 139 141
+ 95 1 142 143
+ 96 1 142 144
+ 97 1 145 146
+ 98 1 145 147
+ 99 1 148 149
+ 100 1 148 150
+ 101 1 151 152
+ 102 1 151 153
+ 103 1 154 155
+ 104 1 154 156
+ 105 1 157 158
+ 106 1 157 159
+ 107 1 160 161
+ 108 1 160 162
+ 109 1 163 164
+ 110 1 163 165
+ 111 1 166 167
+ 112 1 166 168
+ 113 1 169 170
+ 114 1 169 171
+ 115 1 172 173
+ 116 1 172 174
+ 117 1 175 176
+ 118 1 175 177
+ 119 1 178 179
+ 120 1 178 180
+ 121 1 181 182
+ 122 1 181 183
+ 123 1 184 185
+ 124 1 184 186
+ 125 1 187 188
+ 126 1 187 189
+ 127 1 190 191
+ 128 1 190 192
+ 129 1 193 194
+ 130 1 193 195
+ 131 1 196 197
+ 132 1 196 198
+ 133 1 199 200
+ 134 1 199 201
+ 135 1 202 203
+ 136 1 202 204
+ 137 1 205 206
+ 138 1 205 207
+ 139 1 208 209
+ 140 1 208 210
+ 141 1 211 212
+ 142 1 211 213
+ 143 1 214 215
+ 144 1 214 216
+ 145 1 217 218
+ 146 1 217 219
+ 147 1 220 221
+ 148 1 220 222
+ 149 1 223 224
+ 150 1 223 225
+ 151 1 226 227
+ 152 1 226 228
+ 153 1 229 230
+ 154 1 229 231
+ 155 1 232 233
+ 156 1 232 234
+ 157 1 235 236
+ 158 1 235 237
+ 159 1 238 239
+ 160 1 238 240
+ 161 1 241 242
+ 162 1 241 243
+ 163 1 244 245
+ 164 1 244 246
+ 165 1 247 248
+ 166 1 247 249
+ 167 1 250 251
+ 168 1 250 252
+ 169 1 253 254
+ 170 1 253 255
+ 171 1 256 257
+ 172 1 256 258
+ 173 1 259 260
+ 174 1 259 261
+ 175 1 262 263
+ 176 1 262 264
+ 177 1 265 266
+ 178 1 265 267
+ 179 1 268 269
+ 180 1 268 270
+ 181 1 271 272
+ 182 1 271 273
+ 183 1 274 275
+ 184 1 274 276
+ 185 1 277 278
+ 186 1 277 279
+ 187 1 280 281
+ 188 1 280 282
+ 189 1 283 284
+ 190 1 283 285
+ 191 1 286 287
+ 192 1 286 288
+ 193 1 289 290
+ 194 1 289 291
+ 195 1 292 293
+ 196 1 292 294
+ 197 1 295 296
+ 198 1 295 297
+ 199 1 298 299
+ 200 1 298 300
+ 201 1 301 302
+ 202 1 301 303
+ 203 1 304 305
+ 204 1 304 306
+ 205 1 307 308
+ 206 1 307 309
+ 207 1 310 311
+ 208 1 310 312
+ 209 1 313 314
+ 210 1 313 315
+ 211 1 316 317
+ 212 1 316 318
+ 213 1 319 320
+ 214 1 319 321
+ 215 1 322 323
+ 216 1 322 324
+ 217 1 325 326
+ 218 1 325 327
+ 219 1 328 329
+ 220 1 328 330
+ 221 1 331 332
+ 222 1 331 333
+ 223 1 334 335
+ 224 1 334 336
+ 225 1 337 338
+ 226 1 337 339
+ 227 1 340 341
+ 228 1 340 342
+ 229 1 343 344
+ 230 1 343 345
+ 231 1 346 347
+ 232 1 346 348
+ 233 1 349 350
+ 234 1 349 351
+ 235 1 352 353
+ 236 1 352 354
+ 237 1 355 356
+ 238 1 355 357
+ 239 1 358 359
+ 240 1 358 360
+ 241 1 361 362
+ 242 1 361 363
+ 243 1 364 365
+ 244 1 364 366
+ 245 1 367 368
+ 246 1 367 369
+ 247 1 370 371
+ 248 1 370 372
+ 249 1 373 374
+ 250 1 373 375
+ 251 1 376 377
+ 252 1 376 378
+ 253 1 379 380
+ 254 1 379 381
+ 255 1 382 383
+ 256 1 382 384
+ 257 1 385 386
+ 258 1 385 387
+ 259 1 388 389
+ 260 1 388 390
+ 261 1 391 392
+ 262 1 391 393
+ 263 1 394 395
+ 264 1 394 396
+ 265 1 397 398
+ 266 1 397 399
+ 267 1 400 401
+ 268 1 400 402
+ 269 1 403 404
+ 270 1 403 405
+ 271 1 406 407
+ 272 1 406 408
+ 273 1 409 410
+ 274 1 409 411
+ 275 1 412 413
+ 276 1 412 414
+ 277 1 415 416
+ 278 1 415 417
+ 279 1 418 419
+ 280 1 418 420
+ 281 1 421 422
+ 282 1 421 423
+ 283 1 424 425
+ 284 1 424 426
+ 285 1 427 428
+ 286 1 427 429
+ 287 1 430 431
+ 288 1 430 432
+ 289 1 433 434
+ 290 1 433 435
+ 291 1 436 437
+ 292 1 436 438
+ 293 1 439 440
+ 294 1 439 441
+ 295 1 442 443
+ 296 1 442 444
+ 297 1 445 446
+ 298 1 445 447
+ 299 1 448 449
+ 300 1 448 450
+ 301 1 451 452
+ 302 1 451 453
+ 303 1 454 455
+ 304 1 454 456
+ 305 1 457 458
+ 306 1 457 459
+ 307 1 460 461
+ 308 1 460 462
+ 309 1 463 464
+ 310 1 463 465
+ 311 1 466 467
+ 312 1 466 468
+ 313 1 469 470
+ 314 1 469 471
+ 315 1 472 473
+ 316 1 472 474
+ 317 1 475 476
+ 318 1 475 477
+ 319 1 478 479
+ 320 1 478 480
+ 321 1 481 482
+ 322 1 481 483
+ 323 1 484 485
+ 324 1 484 486
+ 325 1 487 488
+ 326 1 487 489
+ 327 1 490 491
+ 328 1 490 492
+ 329 1 493 494
+ 330 1 493 495
+ 331 1 496 497
+ 332 1 496 498
+ 333 1 499 500
+ 334 1 499 501
+ 335 1 502 503
+ 336 1 502 504
+ 337 1 505 506
+ 338 1 505 507
+ 339 1 508 509
+ 340 1 508 510
+ 341 1 511 512
+ 342 1 511 513
+ 343 1 514 515
+ 344 1 514 516
+ 345 1 517 518
+ 346 1 517 519
+ 347 1 520 521
+ 348 1 520 522
+ 349 1 523 524
+ 350 1 523 525
+ 351 1 526 527
+ 352 1 526 528
+ 353 1 529 530
+ 354 1 529 531
+ 355 1 532 533
+ 356 1 532 534
+ 357 1 535 536
+ 358 1 535 537
+ 359 1 538 539
+ 360 1 538 540
+ 361 1 541 542
+ 362 1 541 543
+ 363 1 544 545
+ 364 1 544 546
+ 365 1 547 548
+ 366 1 547 549
+ 367 1 550 551
+ 368 1 550 552
+ 369 1 553 554
+ 370 1 553 555
+ 371 1 556 557
+ 372 1 556 558
+ 373 1 559 560
+ 374 1 559 561
+ 375 1 562 563
+ 376 1 562 564
+ 377 1 565 566
+ 378 1 565 567
+ 379 1 568 569
+ 380 1 568 570
+ 381 1 571 572
+ 382 1 571 573
+ 383 1 574 575
+ 384 1 574 576
+ 385 1 577 578
+ 386 1 577 579
+ 387 1 580 581
+ 388 1 580 582
+ 389 1 583 584
+ 390 1 583 585
+ 391 1 586 587
+ 392 1 586 588
+ 393 1 589 590
+ 394 1 589 591
+ 395 1 592 593
+ 396 1 592 594
+ 397 1 595 596
+ 398 1 595 597
+ 399 1 598 599
+ 400 1 598 600
+ 401 1 601 602
+ 402 1 601 603
+ 403 1 604 605
+ 404 1 604 606
+ 405 1 607 608
+ 406 1 607 609
+ 407 1 610 611
+ 408 1 610 612
+ 409 1 613 614
+ 410 1 613 615
+ 411 1 616 617
+ 412 1 616 618
+ 413 1 619 620
+ 414 1 619 621
+ 415 1 622 623
+ 416 1 622 624
+ 417 1 625 626
+ 418 1 625 627
+ 419 1 628 629
+ 420 1 628 630
+ 421 1 631 632
+ 422 1 631 633
+ 423 1 634 635
+ 424 1 634 636
+ 425 1 637 638
+ 426 1 637 639
+ 427 1 640 641
+ 428 1 640 642
+ 429 1 643 644
+ 430 1 643 645
+ 431 1 646 647
+ 432 1 646 648
+
+Angles
+
+ 1 1 2 1 3
+ 2 1 5 4 6
+ 3 1 8 7 9
+ 4 1 11 10 12
+ 5 1 14 13 15
+ 6 1 17 16 18
+ 7 1 20 19 21
+ 8 1 23 22 24
+ 9 1 26 25 27
+ 10 1 29 28 30
+ 11 1 32 31 33
+ 12 1 35 34 36
+ 13 1 38 37 39
+ 14 1 41 40 42
+ 15 1 44 43 45
+ 16 1 47 46 48
+ 17 1 50 49 51
+ 18 1 53 52 54
+ 19 1 56 55 57
+ 20 1 59 58 60
+ 21 1 62 61 63
+ 22 1 65 64 66
+ 23 1 68 67 69
+ 24 1 71 70 72
+ 25 1 74 73 75
+ 26 1 77 76 78
+ 27 1 80 79 81
+ 28 1 83 82 84
+ 29 1 86 85 87
+ 30 1 89 88 90
+ 31 1 92 91 93
+ 32 1 95 94 96
+ 33 1 98 97 99
+ 34 1 101 100 102
+ 35 1 104 103 105
+ 36 1 107 106 108
+ 37 1 110 109 111
+ 38 1 113 112 114
+ 39 1 116 115 117
+ 40 1 119 118 120
+ 41 1 122 121 123
+ 42 1 125 124 126
+ 43 1 128 127 129
+ 44 1 131 130 132
+ 45 1 134 133 135
+ 46 1 137 136 138
+ 47 1 140 139 141
+ 48 1 143 142 144
+ 49 1 146 145 147
+ 50 1 149 148 150
+ 51 1 152 151 153
+ 52 1 155 154 156
+ 53 1 158 157 159
+ 54 1 161 160 162
+ 55 1 164 163 165
+ 56 1 167 166 168
+ 57 1 170 169 171
+ 58 1 173 172 174
+ 59 1 176 175 177
+ 60 1 179 178 180
+ 61 1 182 181 183
+ 62 1 185 184 186
+ 63 1 188 187 189
+ 64 1 191 190 192
+ 65 1 194 193 195
+ 66 1 197 196 198
+ 67 1 200 199 201
+ 68 1 203 202 204
+ 69 1 206 205 207
+ 70 1 209 208 210
+ 71 1 212 211 213
+ 72 1 215 214 216
+ 73 1 218 217 219
+ 74 1 221 220 222
+ 75 1 224 223 225
+ 76 1 227 226 228
+ 77 1 230 229 231
+ 78 1 233 232 234
+ 79 1 236 235 237
+ 80 1 239 238 240
+ 81 1 242 241 243
+ 82 1 245 244 246
+ 83 1 248 247 249
+ 84 1 251 250 252
+ 85 1 254 253 255
+ 86 1 257 256 258
+ 87 1 260 259 261
+ 88 1 263 262 264
+ 89 1 266 265 267
+ 90 1 269 268 270
+ 91 1 272 271 273
+ 92 1 275 274 276
+ 93 1 278 277 279
+ 94 1 281 280 282
+ 95 1 284 283 285
+ 96 1 287 286 288
+ 97 1 290 289 291
+ 98 1 293 292 294
+ 99 1 296 295 297
+ 100 1 299 298 300
+ 101 1 302 301 303
+ 102 1 305 304 306
+ 103 1 308 307 309
+ 104 1 311 310 312
+ 105 1 314 313 315
+ 106 1 317 316 318
+ 107 1 320 319 321
+ 108 1 323 322 324
+ 109 1 326 325 327
+ 110 1 329 328 330
+ 111 1 332 331 333
+ 112 1 335 334 336
+ 113 1 338 337 339
+ 114 1 341 340 342
+ 115 1 344 343 345
+ 116 1 347 346 348
+ 117 1 350 349 351
+ 118 1 353 352 354
+ 119 1 356 355 357
+ 120 1 359 358 360
+ 121 1 362 361 363
+ 122 1 365 364 366
+ 123 1 368 367 369
+ 124 1 371 370 372
+ 125 1 374 373 375
+ 126 1 377 376 378
+ 127 1 380 379 381
+ 128 1 383 382 384
+ 129 1 386 385 387
+ 130 1 389 388 390
+ 131 1 392 391 393
+ 132 1 395 394 396
+ 133 1 398 397 399
+ 134 1 401 400 402
+ 135 1 404 403 405
+ 136 1 407 406 408
+ 137 1 410 409 411
+ 138 1 413 412 414
+ 139 1 416 415 417
+ 140 1 419 418 420
+ 141 1 422 421 423
+ 142 1 425 424 426
+ 143 1 428 427 429
+ 144 1 431 430 432
+ 145 1 434 433 435
+ 146 1 437 436 438
+ 147 1 440 439 441
+ 148 1 443 442 444
+ 149 1 446 445 447
+ 150 1 449 448 450
+ 151 1 452 451 453
+ 152 1 455 454 456
+ 153 1 458 457 459
+ 154 1 461 460 462
+ 155 1 464 463 465
+ 156 1 467 466 468
+ 157 1 470 469 471
+ 158 1 473 472 474
+ 159 1 476 475 477
+ 160 1 479 478 480
+ 161 1 482 481 483
+ 162 1 485 484 486
+ 163 1 488 487 489
+ 164 1 491 490 492
+ 165 1 494 493 495
+ 166 1 497 496 498
+ 167 1 500 499 501
+ 168 1 503 502 504
+ 169 1 506 505 507
+ 170 1 509 508 510
+ 171 1 512 511 513
+ 172 1 515 514 516
+ 173 1 518 517 519
+ 174 1 521 520 522
+ 175 1 524 523 525
+ 176 1 527 526 528
+ 177 1 530 529 531
+ 178 1 533 532 534
+ 179 1 536 535 537
+ 180 1 539 538 540
+ 181 1 542 541 543
+ 182 1 545 544 546
+ 183 1 548 547 549
+ 184 1 551 550 552
+ 185 1 554 553 555
+ 186 1 557 556 558
+ 187 1 560 559 561
+ 188 1 563 562 564
+ 189 1 566 565 567
+ 190 1 569 568 570
+ 191 1 572 571 573
+ 192 1 575 574 576
+ 193 1 578 577 579
+ 194 1 581 580 582
+ 195 1 584 583 585
+ 196 1 587 586 588
+ 197 1 590 589 591
+ 198 1 593 592 594
+ 199 1 596 595 597
+ 200 1 599 598 600
+ 201 1 602 601 603
+ 202 1 605 604 606
+ 203 1 608 607 609
+ 204 1 611 610 612
+ 205 1 614 613 615
+ 206 1 617 616 618
+ 207 1 620 619 621
+ 208 1 623 622 624
+ 209 1 626 625 627
+ 210 1 629 628 630
+ 211 1 632 631 633
+ 212 1 635 634 636
+ 213 1 638 637 639
+ 214 1 641 640 642
+ 215 1 644 643 645
+ 216 1 647 646 648
diff --git a/tools/i-pi/examples/lammps/h2o-piglet.8/in.water b/tools/i-pi/examples/lammps/h2o-piglet.8/in.water
new file mode 100644
index 0000000000000000000000000000000000000000..9592d112f51368a35603ffed5e5d55443a8283c4
--- /dev/null
+++ b/tools/i-pi/examples/lammps/h2o-piglet.8/in.water
@@ -0,0 +1,32 @@
+units		electron
+atom_style	full
+
+#pair_style	lj/cut/coul/long 17.01
+pair_style      lj/cut/tip4p/long 1 2 1 1 0.278072379 17.007
+#bond_style      harmonic
+bond_style      class2 
+angle_style     harmonic
+#kspace_style	pppm 0.0001
+kspace_style	pppm/tip4p 0.0001
+
+read_data	data.water
+pair_coeff  * * 0 0
+pair_coeff  1  1  0.000295147 5.96946
+
+neighbor	2.0 bin
+
+timestep	0.00025
+
+#velocity all create 298.0 2345187
+
+#thermo_style	multi
+#thermo		1
+
+#fix		1 all nvt temp 298.0 298.0 30.0 tchain 1
+#fix 1 all nve
+fix 1 all ipi piglet_8 32342 unix
+
+#dump		1 all xyz 25 dump.xyz
+
+run		100000000
+
diff --git a/tools/i-pi/examples/lammps/h2o-piglet.8/input.xml b/tools/i-pi/examples/lammps/h2o-piglet.8/input.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ace4d7f3ded02c0877cce4611475fd4b24a4d564
--- /dev/null
+++ b/tools/i-pi/examples/lammps/h2o-piglet.8/input.xml
@@ -0,0 +1,49 @@
+<simulation>
+   <initialize nbeads='8'> 
+      <file mode='pdb'> water_298K.pdb </file>
+      <velocities mode="thermal" units='kelvin'> 298 </velocities>
+   </initialize>
+   <output prefix='gle_lammps'>
+      <properties stride='1' filename='out'>  [ step, time{picosecond}, conserved{kelvin}, temperature{kelvin}, kinetic_cv{kelvin}, potential{kelvin}, pressure_cv{megapascal}] </properties>
+      <trajectory filename='pos' stride='20'> positions </trajectory>
+   </output>
+   <total_steps>500000</total_steps>
+   <prng><seed>32342</seed></prng>
+   <forces>
+      <socket mode='unix'>
+         <address>piglet_8</address>
+      </socket>
+   </forces>
+   <ensemble mode='nvt'>
+  <thermostat mode='nm_gle'>
+    <A shape='(8,9,9)'>
+[
+   1.300513766690e-2,     9.078220950722e-6,     8.180522706851e-6,     1.196620464216e-5,     1.108609196233e-4,    -8.941338246404e-4,     7.817382329484e-3,    -1.206049888192e-2,    -5.215913547478e-2,    -9.756343549369e-6,     2.131200614277e-7,     2.972243541454e-6,    -4.459298032276e-6,     2.177011229810e-7,     4.960251269751e-7,    -2.083064995647e-6,    -7.004617074013e-6,     2.299410255689e-5,    -1.851243089560e-6,    -2.972243541454e-6,     1.956991859501e-6,     1.742357040415e-6,    -2.082265548357e-6,    -1.760771137012e-6,    -3.733162998255e-6,    -3.711884630223e-5,    -3.625483838477e-5,     1.492481502899e-5,     4.459298032276e-6,    -1.742357040415e-6,     5.092476869103e-6,     2.033910859306e-6,     5.856365217540e-7,    -3.020170664006e-6,     1.868034354962e-5,    -5.049113665348e-6,     1.059383195368e-4,    -2.177011229810e-7,     2.082265548357e-6,    -2.033910859306e-6,     5.467813757620e-5,    -6.684243951800e-6,    -9.770331146786e-7,    -2.159991642805e-4,     4.667176340213e-4,    -7.611448585233e-4,    -4.960251269751e-7,     1.760771137012e-6,    -5.856365217540e-7,     6.684243951800e-6,     6.616597356640e-4,    -1.637891086976e-6,    -2.056652206438e-4,     2.960975881160e-4,     7.659946833472e-3,     2.083064995647e-6,     3.733162998255e-6,     3.020170664006e-6,     9.770331146786e-7,     1.637891086976e-6,     6.390977118535e-3,    -6.246090363901e-5,     5.054994461623e-4,    -1.078245092236e-2,     7.004617074013e-6,     3.711884630223e-5,    -1.868034354962e-5,     2.159991642805e-4,     2.056652206438e-4,     6.246090363901e-5,     1.730397061203e-1,     1.004651317366e-4,    -5.467410217589e-2,    -2.299410255689e-5,     3.625483838477e-5,     5.049113665348e-6,    -4.667176340213e-4,    -2.960975881160e-4,    -5.054994461623e-4,    -1.004651317366e-4,     1.795223909984e+0,  
+   8.433361179684e-6,     5.985771048989e-3,     0.000000000000e+0,     1.106850007061e-2,     0.000000000000e+0,     4.737897597685e-3,     0.000000000000e+0,     2.344265458323e-4,     0.000000000000e+0,    -5.985771048989e-3,     9.461326310093e-2,     9.829968606252e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -9.829968606252e-3,    1.889231157037e-14,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -1.106850007061e-2,     0.000000000000e+0,     0.000000000000e+0,     1.488504300030e-2,     4.214899343968e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -4.214899343968e-3,    1.889231157037e-14,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -4.737897597685e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     3.514677295700e-2,     8.541932660186e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -8.541932660186e-3,    1.889231157037e-14,     0.000000000000e+0,     0.000000000000e+0,    -2.344265458323e-4,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     2.199180080880e-4,     3.798554823700e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -3.798554823700e-3,    1.889231157037e-14,  
+   8.433361179684e-6,     5.985771048989e-3,     0.000000000000e+0,     1.106850007061e-2,     0.000000000000e+0,     4.737897597685e-3,     0.000000000000e+0,     2.344265458323e-4,     0.000000000000e+0,    -5.985771048989e-3,     9.461326310093e-2,     9.829968606252e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -9.829968606252e-3,    1.889231157037e-14,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -1.106850007061e-2,     0.000000000000e+0,     0.000000000000e+0,     1.488504300030e-2,     4.214899343968e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -4.214899343968e-3,    1.889231157037e-14,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -4.737897597685e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     3.514677295700e-2,     8.541932660186e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -8.541932660186e-3,    1.889231157037e-14,     0.000000000000e+0,     0.000000000000e+0,    -2.344265458323e-4,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     2.199180080880e-4,     3.798554823700e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -3.798554823700e-3,    1.889231157037e-14,  
+   8.433361179684e-6,     5.985771048989e-3,     0.000000000000e+0,     1.106850007061e-2,     0.000000000000e+0,     4.737897597685e-3,     0.000000000000e+0,     2.344265458323e-4,     0.000000000000e+0,    -5.985771048989e-3,     9.461326310093e-2,     9.829968606252e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -9.829968606252e-3,    1.889231157037e-14,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -1.106850007061e-2,     0.000000000000e+0,     0.000000000000e+0,     1.488504300030e-2,     4.214899343968e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -4.214899343968e-3,    1.889231157037e-14,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -4.737897597685e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     3.514677295700e-2,     8.541932660186e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -8.541932660186e-3,    1.889231157037e-14,     0.000000000000e+0,     0.000000000000e+0,    -2.344265458323e-4,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     2.199180080880e-4,     3.798554823700e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -3.798554823700e-3,    1.889231157037e-14,  
+   8.433361179684e-6,     5.985771048989e-3,     0.000000000000e+0,     1.106850007061e-2,     0.000000000000e+0,     4.737897597685e-3,     0.000000000000e+0,     2.344265458323e-4,     0.000000000000e+0,    -5.985771048989e-3,     9.461326310093e-2,     9.829968606252e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -9.829968606252e-3,    1.889231157037e-14,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -1.106850007061e-2,     0.000000000000e+0,     0.000000000000e+0,     1.488504300030e-2,     4.214899343968e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -4.214899343968e-3,    1.889231157037e-14,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -4.737897597685e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     3.514677295700e-2,     8.541932660186e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -8.541932660186e-3,    1.889231157037e-14,     0.000000000000e+0,     0.000000000000e+0,    -2.344265458323e-4,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     2.199180080880e-4,     3.798554823700e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -3.798554823700e-3,    1.889231157037e-14,  
+   8.433361179684e-6,     5.985771048989e-3,     0.000000000000e+0,     1.106850007061e-2,     0.000000000000e+0,     4.737897597685e-3,     0.000000000000e+0,     2.344265458323e-4,     0.000000000000e+0,    -5.985771048989e-3,     9.461326310093e-2,     9.829968606252e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -9.829968606252e-3,    1.889231157037e-14,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -1.106850007061e-2,     0.000000000000e+0,     0.000000000000e+0,     1.488504300030e-2,     4.214899343968e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -4.214899343968e-3,    1.889231157037e-14,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -4.737897597685e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     3.514677295700e-2,     8.541932660186e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -8.541932660186e-3,    1.889231157037e-14,     0.000000000000e+0,     0.000000000000e+0,    -2.344265458323e-4,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     2.199180080880e-4,     3.798554823700e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -3.798554823700e-3,    1.889231157037e-14,  
+   8.433361179684e-6,     5.985771048989e-3,     0.000000000000e+0,     1.106850007061e-2,     0.000000000000e+0,     4.737897597685e-3,     0.000000000000e+0,     2.344265458323e-4,     0.000000000000e+0,    -5.985771048989e-3,     9.461326310093e-2,     9.829968606252e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -9.829968606252e-3,    1.889231157037e-14,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -1.106850007061e-2,     0.000000000000e+0,     0.000000000000e+0,     1.488504300030e-2,     4.214899343968e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -4.214899343968e-3,    1.889231157037e-14,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -4.737897597685e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     3.514677295700e-2,     8.541932660186e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -8.541932660186e-3,    1.889231157037e-14,     0.000000000000e+0,     0.000000000000e+0,    -2.344265458323e-4,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     2.199180080880e-4,     3.798554823700e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -3.798554823700e-3,    1.889231157037e-14,  
+   8.433361179684e-6,     5.985771048989e-3,     0.000000000000e+0,     1.106850007061e-2,     0.000000000000e+0,     4.737897597685e-3,     0.000000000000e+0,     2.344265458323e-4,     0.000000000000e+0,    -5.985771048989e-3,     9.461326310093e-2,     9.829968606252e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -9.829968606252e-3,    1.889231157037e-14,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -1.106850007061e-2,     0.000000000000e+0,     0.000000000000e+0,     1.488504300030e-2,     4.214899343968e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -4.214899343968e-3,    1.889231157037e-14,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -4.737897597685e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     3.514677295700e-2,     8.541932660186e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -8.541932660186e-3,    1.889231157037e-14,     0.000000000000e+0,     0.000000000000e+0,    -2.344265458323e-4,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     2.199180080880e-4,     3.798554823700e-3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,    -3.798554823700e-3,    1.889231157037e-14
+]
+    </A>
+    <C shape='(8,9,9)' units='kelvin'>
+[
+     2.384000000000e+3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     2.384000000000e+3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     2.384000000000e+3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     2.384000000000e+3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     2.384000000000e+3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     2.384000000000e+3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     2.384000000000e+3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     2.384000000000e+3,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     0.000000000000e+0,     2.384000000000e+3,
+     2.698549372188e+3,    -1.368081060516e+3,    -3.209415830440e+3,     8.738658365140e+2,     7.268039280880e+2,    -2.513005676292e+2,    -4.150754888640e+2,    -1.260054684948e+3,    -6.448165752780e+2,    -1.368081060516e+3,     2.965586458180e+4,     5.268769597220e-8,    -5.555628715240e+0,     4.972346413560e+2,    -5.924916939780e+1,     1.075269335280e+2,    -8.318280168320e+1,    -1.172679285326e+0,    -3.209415830440e+3,     5.268504922560e-8,     2.770155230160e+4,    -1.159648313612e+3,    -4.345682898960e+3,    -1.237408936636e+2,    -1.339182640444e+3,     3.034680577260e+0,    -4.135056752260e+2,     8.738658365140e+2,    -5.555628715240e+0,    -1.159648313612e+3,     1.243175060816e+3,     1.278480055046e-8,     5.970691220840e+1,    -2.520026819128e+2,    -9.347295856760e+2,    -4.292224714720e+2,     7.268039280880e+2,     4.972346413560e+2,    -4.345682898960e+3,     1.278476746650e-8,     3.151792246900e+3,     1.243472620074e+2,    -7.904812686860e+1,     4.762678432220e+2,    -1.019900735322e+3,    -2.513005676292e+2,    -5.924916939780e+1,    -1.237408936636e+2,     5.970691220840e+1,     1.243472620074e+2,     5.255446383760e+3,     1.045563267562e-8,    -1.725915110312e+2,    -4.871461433960e+0,    -4.150754888640e+2,     1.075269335280e+2,    -1.339182640444e+3,    -2.520026819128e+2,    -7.904812686860e+1,     1.045503715242e-8,     5.025219194680e+3,     1.095461232690e+1,    -4.143625581340e+2,    -1.260054684948e+3,    -8.318280168320e+1,     3.034680577260e+0,    -9.347295856760e+2,     4.762678432220e+2,    -1.725915110312e+2,     1.095461232690e+1,     6.411989938480e+4,     3.172261366260e-7,    -6.448165752780e+2,    -1.172679285326e+0,    -4.135056752260e+2,    -4.292224714720e+2,    -1.019900735322e+3,    -4.871461433960e+0,    -4.143625581340e+2,     3.172261720880e-7,     6.408010473300e+4,
+     2.698549372188e+3,    -1.368081060516e+3,    -3.209415830440e+3,     8.738658365140e+2,     7.268039280880e+2,    -2.513005676292e+2,    -4.150754888640e+2,    -1.260054684948e+3,    -6.448165752780e+2,    -1.368081060516e+3,     2.965586458180e+4,     5.268769597220e-8,    -5.555628715240e+0,     4.972346413560e+2,    -5.924916939780e+1,     1.075269335280e+2,    -8.318280168320e+1,    -1.172679285326e+0,    -3.209415830440e+3,     5.268504922560e-8,     2.770155230160e+4,    -1.159648313612e+3,    -4.345682898960e+3,    -1.237408936636e+2,    -1.339182640444e+3,     3.034680577260e+0,    -4.135056752260e+2,     8.738658365140e+2,    -5.555628715240e+0,    -1.159648313612e+3,     1.243175060816e+3,     1.278480055046e-8,     5.970691220840e+1,    -2.520026819128e+2,    -9.347295856760e+2,    -4.292224714720e+2,     7.268039280880e+2,     4.972346413560e+2,    -4.345682898960e+3,     1.278476746650e-8,     3.151792246900e+3,     1.243472620074e+2,    -7.904812686860e+1,     4.762678432220e+2,    -1.019900735322e+3,    -2.513005676292e+2,    -5.924916939780e+1,    -1.237408936636e+2,     5.970691220840e+1,     1.243472620074e+2,     5.255446383760e+3,     1.045563267562e-8,    -1.725915110312e+2,    -4.871461433960e+0,    -4.150754888640e+2,     1.075269335280e+2,    -1.339182640444e+3,    -2.520026819128e+2,    -7.904812686860e+1,     1.045503715242e-8,     5.025219194680e+3,     1.095461232690e+1,    -4.143625581340e+2,    -1.260054684948e+3,    -8.318280168320e+1,     3.034680577260e+0,    -9.347295856760e+2,     4.762678432220e+2,    -1.725915110312e+2,     1.095461232690e+1,     6.411989938480e+4,     3.172261366260e-7,    -6.448165752780e+2,    -1.172679285326e+0,    -4.135056752260e+2,    -4.292224714720e+2,    -1.019900735322e+3,    -4.871461433960e+0,    -4.143625581340e+2,     3.172261720880e-7,     6.408010473300e+4,
+     2.698549372188e+3,    -1.368081060516e+3,    -3.209415830440e+3,     8.738658365140e+2,     7.268039280880e+2,    -2.513005676292e+2,    -4.150754888640e+2,    -1.260054684948e+3,    -6.448165752780e+2,    -1.368081060516e+3,     2.965586458180e+4,     5.268769597220e-8,    -5.555628715240e+0,     4.972346413560e+2,    -5.924916939780e+1,     1.075269335280e+2,    -8.318280168320e+1,    -1.172679285326e+0,    -3.209415830440e+3,     5.268504922560e-8,     2.770155230160e+4,    -1.159648313612e+3,    -4.345682898960e+3,    -1.237408936636e+2,    -1.339182640444e+3,     3.034680577260e+0,    -4.135056752260e+2,     8.738658365140e+2,    -5.555628715240e+0,    -1.159648313612e+3,     1.243175060816e+3,     1.278480055046e-8,     5.970691220840e+1,    -2.520026819128e+2,    -9.347295856760e+2,    -4.292224714720e+2,     7.268039280880e+2,     4.972346413560e+2,    -4.345682898960e+3,     1.278476746650e-8,     3.151792246900e+3,     1.243472620074e+2,    -7.904812686860e+1,     4.762678432220e+2,    -1.019900735322e+3,    -2.513005676292e+2,    -5.924916939780e+1,    -1.237408936636e+2,     5.970691220840e+1,     1.243472620074e+2,     5.255446383760e+3,     1.045563267562e-8,    -1.725915110312e+2,    -4.871461433960e+0,    -4.150754888640e+2,     1.075269335280e+2,    -1.339182640444e+3,    -2.520026819128e+2,    -7.904812686860e+1,     1.045503715242e-8,     5.025219194680e+3,     1.095461232690e+1,    -4.143625581340e+2,    -1.260054684948e+3,    -8.318280168320e+1,     3.034680577260e+0,    -9.347295856760e+2,     4.762678432220e+2,    -1.725915110312e+2,     1.095461232690e+1,     6.411989938480e+4,     3.172261366260e-7,    -6.448165752780e+2,    -1.172679285326e+0,    -4.135056752260e+2,    -4.292224714720e+2,    -1.019900735322e+3,    -4.871461433960e+0,    -4.143625581340e+2,     3.172261720880e-7,     6.408010473300e+4,
+     2.698549372188e+3,    -1.368081060516e+3,    -3.209415830440e+3,     8.738658365140e+2,     7.268039280880e+2,    -2.513005676292e+2,    -4.150754888640e+2,    -1.260054684948e+3,    -6.448165752780e+2,    -1.368081060516e+3,     2.965586458180e+4,     5.268769597220e-8,    -5.555628715240e+0,     4.972346413560e+2,    -5.924916939780e+1,     1.075269335280e+2,    -8.318280168320e+1,    -1.172679285326e+0,    -3.209415830440e+3,     5.268504922560e-8,     2.770155230160e+4,    -1.159648313612e+3,    -4.345682898960e+3,    -1.237408936636e+2,    -1.339182640444e+3,     3.034680577260e+0,    -4.135056752260e+2,     8.738658365140e+2,    -5.555628715240e+0,    -1.159648313612e+3,     1.243175060816e+3,     1.278480055046e-8,     5.970691220840e+1,    -2.520026819128e+2,    -9.347295856760e+2,    -4.292224714720e+2,     7.268039280880e+2,     4.972346413560e+2,    -4.345682898960e+3,     1.278476746650e-8,     3.151792246900e+3,     1.243472620074e+2,    -7.904812686860e+1,     4.762678432220e+2,    -1.019900735322e+3,    -2.513005676292e+2,    -5.924916939780e+1,    -1.237408936636e+2,     5.970691220840e+1,     1.243472620074e+2,     5.255446383760e+3,     1.045563267562e-8,    -1.725915110312e+2,    -4.871461433960e+0,    -4.150754888640e+2,     1.075269335280e+2,    -1.339182640444e+3,    -2.520026819128e+2,    -7.904812686860e+1,     1.045503715242e-8,     5.025219194680e+3,     1.095461232690e+1,    -4.143625581340e+2,    -1.260054684948e+3,    -8.318280168320e+1,     3.034680577260e+0,    -9.347295856760e+2,     4.762678432220e+2,    -1.725915110312e+2,     1.095461232690e+1,     6.411989938480e+4,     3.172261366260e-7,    -6.448165752780e+2,    -1.172679285326e+0,    -4.135056752260e+2,    -4.292224714720e+2,    -1.019900735322e+3,    -4.871461433960e+0,    -4.143625581340e+2,     3.172261720880e-7,     6.408010473300e+4,
+     2.698549372188e+3,    -1.368081060516e+3,    -3.209415830440e+3,     8.738658365140e+2,     7.268039280880e+2,    -2.513005676292e+2,    -4.150754888640e+2,    -1.260054684948e+3,    -6.448165752780e+2,    -1.368081060516e+3,     2.965586458180e+4,     5.268769597220e-8,    -5.555628715240e+0,     4.972346413560e+2,    -5.924916939780e+1,     1.075269335280e+2,    -8.318280168320e+1,    -1.172679285326e+0,    -3.209415830440e+3,     5.268504922560e-8,     2.770155230160e+4,    -1.159648313612e+3,    -4.345682898960e+3,    -1.237408936636e+2,    -1.339182640444e+3,     3.034680577260e+0,    -4.135056752260e+2,     8.738658365140e+2,    -5.555628715240e+0,    -1.159648313612e+3,     1.243175060816e+3,     1.278480055046e-8,     5.970691220840e+1,    -2.520026819128e+2,    -9.347295856760e+2,    -4.292224714720e+2,     7.268039280880e+2,     4.972346413560e+2,    -4.345682898960e+3,     1.278476746650e-8,     3.151792246900e+3,     1.243472620074e+2,    -7.904812686860e+1,     4.762678432220e+2,    -1.019900735322e+3,    -2.513005676292e+2,    -5.924916939780e+1,    -1.237408936636e+2,     5.970691220840e+1,     1.243472620074e+2,     5.255446383760e+3,     1.045563267562e-8,    -1.725915110312e+2,    -4.871461433960e+0,    -4.150754888640e+2,     1.075269335280e+2,    -1.339182640444e+3,    -2.520026819128e+2,    -7.904812686860e+1,     1.045503715242e-8,     5.025219194680e+3,     1.095461232690e+1,    -4.143625581340e+2,    -1.260054684948e+3,    -8.318280168320e+1,     3.034680577260e+0,    -9.347295856760e+2,     4.762678432220e+2,    -1.725915110312e+2,     1.095461232690e+1,     6.411989938480e+4,     3.172261366260e-7,    -6.448165752780e+2,    -1.172679285326e+0,    -4.135056752260e+2,    -4.292224714720e+2,    -1.019900735322e+3,    -4.871461433960e+0,    -4.143625581340e+2,     3.172261720880e-7,     6.408010473300e+4,
+     2.698549372188e+3,    -1.368081060516e+3,    -3.209415830440e+3,     8.738658365140e+2,     7.268039280880e+2,    -2.513005676292e+2,    -4.150754888640e+2,    -1.260054684948e+3,    -6.448165752780e+2,    -1.368081060516e+3,     2.965586458180e+4,     5.268769597220e-8,    -5.555628715240e+0,     4.972346413560e+2,    -5.924916939780e+1,     1.075269335280e+2,    -8.318280168320e+1,    -1.172679285326e+0,    -3.209415830440e+3,     5.268504922560e-8,     2.770155230160e+4,    -1.159648313612e+3,    -4.345682898960e+3,    -1.237408936636e+2,    -1.339182640444e+3,     3.034680577260e+0,    -4.135056752260e+2,     8.738658365140e+2,    -5.555628715240e+0,    -1.159648313612e+3,     1.243175060816e+3,     1.278480055046e-8,     5.970691220840e+1,    -2.520026819128e+2,    -9.347295856760e+2,    -4.292224714720e+2,     7.268039280880e+2,     4.972346413560e+2,    -4.345682898960e+3,     1.278476746650e-8,     3.151792246900e+3,     1.243472620074e+2,    -7.904812686860e+1,     4.762678432220e+2,    -1.019900735322e+3,    -2.513005676292e+2,    -5.924916939780e+1,    -1.237408936636e+2,     5.970691220840e+1,     1.243472620074e+2,     5.255446383760e+3,     1.045563267562e-8,    -1.725915110312e+2,    -4.871461433960e+0,    -4.150754888640e+2,     1.075269335280e+2,    -1.339182640444e+3,    -2.520026819128e+2,    -7.904812686860e+1,     1.045503715242e-8,     5.025219194680e+3,     1.095461232690e+1,    -4.143625581340e+2,    -1.260054684948e+3,    -8.318280168320e+1,     3.034680577260e+0,    -9.347295856760e+2,     4.762678432220e+2,    -1.725915110312e+2,     1.095461232690e+1,     6.411989938480e+4,     3.172261366260e-7,    -6.448165752780e+2,    -1.172679285326e+0,    -4.135056752260e+2,    -4.292224714720e+2,    -1.019900735322e+3,    -4.871461433960e+0,    -4.143625581340e+2,     3.172261720880e-7,     6.408010473300e+4,
+     2.698549372188e+3,    -1.368081060516e+3,    -3.209415830440e+3,     8.738658365140e+2,     7.268039280880e+2,    -2.513005676292e+2,    -4.150754888640e+2,    -1.260054684948e+3,    -6.448165752780e+2,    -1.368081060516e+3,     2.965586458180e+4,     5.268769597220e-8,    -5.555628715240e+0,     4.972346413560e+2,    -5.924916939780e+1,     1.075269335280e+2,    -8.318280168320e+1,    -1.172679285326e+0,    -3.209415830440e+3,     5.268504922560e-8,     2.770155230160e+4,    -1.159648313612e+3,    -4.345682898960e+3,    -1.237408936636e+2,    -1.339182640444e+3,     3.034680577260e+0,    -4.135056752260e+2,     8.738658365140e+2,    -5.555628715240e+0,    -1.159648313612e+3,     1.243175060816e+3,     1.278480055046e-8,     5.970691220840e+1,    -2.520026819128e+2,    -9.347295856760e+2,    -4.292224714720e+2,     7.268039280880e+2,     4.972346413560e+2,    -4.345682898960e+3,     1.278476746650e-8,     3.151792246900e+3,     1.243472620074e+2,    -7.904812686860e+1,     4.762678432220e+2,    -1.019900735322e+3,    -2.513005676292e+2,    -5.924916939780e+1,    -1.237408936636e+2,     5.970691220840e+1,     1.243472620074e+2,     5.255446383760e+3,     1.045563267562e-8,    -1.725915110312e+2,    -4.871461433960e+0,    -4.150754888640e+2,     1.075269335280e+2,    -1.339182640444e+3,    -2.520026819128e+2,    -7.904812686860e+1,     1.045503715242e-8,     5.025219194680e+3,     1.095461232690e+1,    -4.143625581340e+2,    -1.260054684948e+3,    -8.318280168320e+1,     3.034680577260e+0,    -9.347295856760e+2,     4.762678432220e+2,    -1.725915110312e+2,     1.095461232690e+1,     6.411989938480e+4,     3.172261366260e-7,    -6.448165752780e+2,    -1.172679285326e+0,    -4.135056752260e+2,    -4.292224714720e+2,    -1.019900735322e+3,    -4.871461433960e+0,    -4.143625581340e+2,     3.172261720880e-7,     6.408010473300e+4
+]
+    </C>
+  </thermostat>
+
+
+      <timestep units='femtosecond'> 0.1</timestep>
+      <temperature units='kelvin'>298</temperature>
+   </ensemble>
+</simulation>
diff --git a/tools/i-pi/examples/lammps/h2o-piglet.8/water_298K.pdb b/tools/i-pi/examples/lammps/h2o-piglet.8/water_298K.pdb
new file mode 100644
index 0000000000000000000000000000000000000000..e8509c868e9f7ece5e82b1ee19d58a269f5db829
--- /dev/null
+++ b/tools/i-pi/examples/lammps/h2o-piglet.8/water_298K.pdb
@@ -0,0 +1,650 @@
+CRYST   35.233   35.233   35.233  90.00  90.00  90.00 P 1          1
+ATOM      1    O   1     1       3.846   5.672   1.323  0.00  0.00            0
+ATOM      2    H   1     1       2.979   7.054   0.857  0.00  0.00            0
+ATOM      3    H   1     1       5.525   5.697   0.451  0.00  0.00            0
+ATOM      4    O   1     1      34.557  34.341   3.078  0.00  0.00            0
+ATOM      5    H   1     1      33.722  34.689   4.840  0.00  0.00            0
+ATOM      6    H   1     1      36.029  33.220   3.711  0.00  0.00            0
+ATOM      7    O   1     1       5.591   1.963  13.477  0.00  0.00            0
+ATOM      8    H   1     1       7.265   1.864  13.851  0.00  0.00            0
+ATOM      9    H   1     1       5.009   3.555  13.916  0.00  0.00            0
+ATOM     10    O   1     1       1.060   2.061  21.718  0.00  0.00            0
+ATOM     11    H   1     1       0.757   0.261  21.820  0.00  0.00            0
+ATOM     12    H   1     1       0.213   3.013  23.047  0.00  0.00            0
+ATOM     13    O   1     1       1.200   1.337  29.006  0.00  0.00            0
+ATOM     14    H   1     1       0.818   1.884  30.732  0.00  0.00            0
+ATOM     15    H   1     1       2.883   1.825  29.011  0.00  0.00            0
+ATOM     16    O   1     1       1.331   1.386  34.306  0.00  0.00            0
+ATOM     17    H   1     1       2.392   2.898  34.846  0.00  0.00            0
+ATOM     18    H   1     1       0.814   0.532  35.836  0.00  0.00            0
+ATOM     19    O   1     1      31.451  10.201   0.726  0.00  0.00            0
+ATOM     20    H   1     1      32.282  10.877  -0.750  0.00  0.00            0
+ATOM     21    H   1     1      30.920  11.594   1.677  0.00  0.00            0
+ATOM     22    O   1     1       0.836  10.808   4.298  0.00  0.00            0
+ATOM     23    H   1     1       0.305  10.643   2.793  0.00  0.00            0
+ATOM     24    H   1     1      -0.356  10.334   5.524  0.00  0.00            0
+ATOM     25    O   1     1      34.381   5.979   9.194  0.00  0.00            0
+ATOM     26    H   1     1      33.616   7.673   8.857  0.00  0.00            0
+ATOM     27    H   1     1      35.115   5.260   7.618  0.00  0.00            0
+ATOM     28    O   1     1      33.212   6.480  24.278  0.00  0.00            0
+ATOM     29    H   1     1      31.624   6.908  23.521  0.00  0.00            0
+ATOM     30    H   1     1      32.544   4.990  24.982  0.00  0.00            0
+ATOM     31    O   1     1       1.992   9.002  26.863  0.00  0.00            0
+ATOM     32    H   1     1       1.856  10.175  25.579  0.00  0.00            0
+ATOM     33    H   1     1       0.519   8.099  26.386  0.00  0.00            0
+ATOM     34    O   1     1       2.054   8.660  32.515  0.00  0.00            0
+ATOM     35    H   1     1       2.167   8.727  30.494  0.00  0.00            0
+ATOM     36    H   1     1       2.374  10.513  33.038  0.00  0.00            0
+ATOM     37    O   1     1       3.402  16.639   3.008  0.00  0.00            0
+ATOM     38    H   1     1       4.127  15.872   4.446  0.00  0.00            0
+ATOM     39    H   1     1       2.905  18.339   3.160  0.00  0.00            0
+ATOM     40    O   1     1       4.222  15.444   8.072  0.00  0.00            0
+ATOM     41    H   1     1       5.211  16.756   8.299  0.00  0.00            0
+ATOM     42    H   1     1       2.560  15.492   8.860  0.00  0.00            0
+ATOM     43    O   1     1       2.831   9.246  16.488  0.00  0.00            0
+ATOM     44    H   1     1       2.869   8.023  18.050  0.00  0.00            0
+ATOM     45    H   1     1       3.960   8.467  15.154  0.00  0.00            0
+ATOM     46    O   1     1       5.563   6.003  20.907  0.00  0.00            0
+ATOM     47    H   1     1       4.653   4.638  21.480  0.00  0.00            0
+ATOM     48    H   1     1       6.405   6.208  22.529  0.00  0.00            0
+ATOM     49    O   1     1       2.087  13.370  22.913  0.00  0.00            0
+ATOM     50    H   1     1       2.832  14.804  23.422  0.00  0.00            0
+ATOM     51    H   1     1       1.434  13.509  21.196  0.00  0.00            0
+ATOM     52    O   1     1       3.369  17.886  25.109  0.00  0.00            0
+ATOM     53    H   1     1       3.655  17.200  26.766  0.00  0.00            0
+ATOM     54    H   1     1       4.772  18.977  24.500  0.00  0.00            0
+ATOM     55    O   1     1      34.764  20.803   0.948  0.00  0.00            0
+ATOM     56    H   1     1      35.210  21.267   2.816  0.00  0.00            0
+ATOM     57    H   1     1      35.962  21.726   0.131  0.00  0.00            0
+ATOM     58    O   1     1       2.836  24.178  15.229  0.00  0.00            0
+ATOM     59    H   1     1       2.795  22.346  14.876  0.00  0.00            0
+ATOM     60    H   1     1       2.414  24.115  17.130  0.00  0.00            0
+ATOM     61    O   1     1      33.000  24.481  15.230  0.00  0.00            0
+ATOM     62    H   1     1      34.640  24.804  15.013  0.00  0.00            0
+ATOM     63    H   1     1      32.401  25.764  14.295  0.00  0.00            0
+ATOM     64    O   1     1       0.404  26.779  23.400  0.00  0.00            0
+ATOM     65    H   1     1       1.353  27.248  24.987  0.00  0.00            0
+ATOM     66    H   1     1       1.546  28.050  22.317  0.00  0.00            0
+ATOM     67    O   1     1      34.222  21.380  25.418  0.00  0.00            0
+ATOM     68    H   1     1      35.669  20.151  25.317  0.00  0.00            0
+ATOM     69    H   1     1      32.960  21.180  23.992  0.00  0.00            0
+ATOM     70    O   1     1      33.259  17.438  32.480  0.00  0.00            0
+ATOM     71    H   1     1      33.314  18.782  33.883  0.00  0.00            0
+ATOM     72    H   1     1      32.743  18.181  30.871  0.00  0.00            0
+ATOM     73    O   1     1       4.463  21.979   3.936  0.00  0.00            0
+ATOM     74    H   1     1       5.856  23.084   3.400  0.00  0.00            0
+ATOM     75    H   1     1       3.986  22.180   5.602  0.00  0.00            0
+ATOM     76    O   1     1       6.258  25.851   8.520  0.00  0.00            0
+ATOM     77    H   1     1       5.767  27.693   8.476  0.00  0.00            0
+ATOM     78    H   1     1       7.202  25.506  10.186  0.00  0.00            0
+ATOM     79    O   1     1       0.601  29.737  12.747  0.00  0.00            0
+ATOM     80    H   1     1      -0.685  30.842  12.350  0.00  0.00            0
+ATOM     81    H   1     1       1.336  30.716  14.031  0.00  0.00            0
+ATOM     82    O   1     1       7.563  28.191  24.333  0.00  0.00            0
+ATOM     83    H   1     1       9.201  28.828  24.684  0.00  0.00            0
+ATOM     84    H   1     1       7.381  27.621  22.799  0.00  0.00            0
+ATOM     85    O   1     1       3.653  27.109  27.772  0.00  0.00            0
+ATOM     86    H   1     1       5.126  27.015  26.772  0.00  0.00            0
+ATOM     87    H   1     1       3.031  28.756  27.698  0.00  0.00            0
+ATOM     88    O   1     1       2.596  23.991  32.476  0.00  0.00            0
+ATOM     89    H   1     1       2.879  24.791  30.859  0.00  0.00            0
+ATOM     90    H   1     1       4.003  22.913  32.701  0.00  0.00            0
+ATOM     91    O   1     1       3.083  31.317   3.644  0.00  0.00            0
+ATOM     92    H   1     1       4.133  30.589   2.539  0.00  0.00            0
+ATOM     93    H   1     1       4.218  32.173   5.037  0.00  0.00            0
+ATOM     94    O   1     1       4.661  30.555   9.368  0.00  0.00            0
+ATOM     95    H   1     1       3.184  29.843  10.132  0.00  0.00            0
+ATOM     96    H   1     1       4.358  32.448   9.126  0.00  0.00            0
+ATOM     97    O   1     1       3.465  32.537  15.778  0.00  0.00            0
+ATOM     98    H   1     1       5.072  31.819  15.903  0.00  0.00            0
+ATOM     99    H   1     1       4.055  34.257  15.284  0.00  0.00            0
+ATOM    100    O   1     1       4.215  29.153  20.317  0.00  0.00            0
+ATOM    101    H   1     1       3.658  30.176  18.842  0.00  0.00            0
+ATOM    102    H   1     1       4.959  30.291  21.449  0.00  0.00            0
+ATOM    103    O   1     1       1.126  31.333  28.768  0.00  0.00            0
+ATOM    104    H   1     1       2.395  31.124  29.925  0.00  0.00            0
+ATOM    105    H   1     1       0.768  33.092  28.898  0.00  0.00            0
+ATOM    106    O   1     1       4.881  32.616  32.302  0.00  0.00            0
+ATOM    107    H   1     1       6.588  32.911  31.725  0.00  0.00            0
+ATOM    108    H   1     1       4.486  34.037  33.249  0.00  0.00            0
+ATOM    109    O   1     1       8.962   5.556   0.151  0.00  0.00            0
+ATOM    110    H   1     1       9.652   6.991   0.859  0.00  0.00            0
+ATOM    111    H   1     1       9.173   4.477   1.645  0.00  0.00            0
+ATOM    112    O   1     1       1.833   3.518   5.679  0.00  0.00            0
+ATOM    113    H   1     1       2.889   2.731   6.788  0.00  0.00            0
+ATOM    114    H   1     1       2.789   4.187   4.147  0.00  0.00            0
+ATOM    115    O   1     1      10.510  34.726  13.073  0.00  0.00            0
+ATOM    116    H   1     1      11.920  34.118  11.919  0.00  0.00            0
+ATOM    117    H   1     1      11.295  34.968  14.741  0.00  0.00            0
+ATOM    118    O   1     1       7.212   0.042  22.454  0.00  0.00            0
+ATOM    119    H   1     1       6.924   0.470  24.172  0.00  0.00            0
+ATOM    120    H   1     1       8.319   1.228  21.653  0.00  0.00            0
+ATOM    121    O   1     1       6.365   2.010  27.544  0.00  0.00            0
+ATOM    122    H   1     1       5.954   3.585  26.852  0.00  0.00            0
+ATOM    123    H   1     1       7.758   2.549  28.696  0.00  0.00            0
+ATOM    124    O   1     1      10.833   3.140  30.787  0.00  0.00            0
+ATOM    125    H   1     1      12.697   2.975  30.867  0.00  0.00            0
+ATOM    126    H   1     1      10.389   3.700  32.404  0.00  0.00            0
+ATOM    127    O   1     1       8.684   9.342   3.912  0.00  0.00            0
+ATOM    128    H   1     1       6.985   9.256   4.773  0.00  0.00            0
+ATOM    129    H   1     1       8.684  10.809   3.011  0.00  0.00            0
+ATOM    130    O   1     1       4.873   9.919   7.707  0.00  0.00            0
+ATOM    131    H   1     1       3.698   9.771   6.194  0.00  0.00            0
+ATOM    132    H   1     1       5.047  11.961   7.624  0.00  0.00            0
+ATOM    133    O   1     1      10.031   5.018   9.699  0.00  0.00            0
+ATOM    134    H   1     1       9.675   3.382  10.340  0.00  0.00            0
+ATOM    135    H   1     1       9.132   5.987  10.825  0.00  0.00            0
+ATOM    136    O   1     1      11.246   3.918  21.929  0.00  0.00            0
+ATOM    137    H   1     1      12.614   2.770  22.341  0.00  0.00            0
+ATOM    138    H   1     1      12.073   5.686  21.497  0.00  0.00            0
+ATOM    139    O   1     1       6.825   7.164  25.708  0.00  0.00            0
+ATOM    140    H   1     1       8.036   8.374  25.980  0.00  0.00            0
+ATOM    141    H   1     1       5.206   7.900  25.891  0.00  0.00            0
+ATOM    142    O   1     1      10.171  12.811   0.295  0.00  0.00            0
+ATOM    143    H   1     1      10.033  12.818  -1.609  0.00  0.00            0
+ATOM    144    H   1     1       9.880  14.492   0.480  0.00  0.00            0
+ATOM    145    O   1     1       8.190  17.402   1.253  0.00  0.00            0
+ATOM    146    H   1     1       9.472  18.531   1.253  0.00  0.00            0
+ATOM    147    H   1     1       6.351  17.817   1.568  0.00  0.00            0
+ATOM    148    O   1     1      11.233  16.188   8.299  0.00  0.00            0
+ATOM    149    H   1     1      10.291  17.689   8.166  0.00  0.00            0
+ATOM    150    H   1     1      12.768  17.123   8.733  0.00  0.00            0
+ATOM    151    O   1     1       6.386   8.002  12.846  0.00  0.00            0
+ATOM    152    H   1     1       7.701   8.896  13.655  0.00  0.00            0
+ATOM    153    H   1     1       5.591   8.877  11.519  0.00  0.00            0
+ATOM    154    O   1     1       8.184  10.419  18.848  0.00  0.00            0
+ATOM    155    H   1     1       9.498   9.434  19.905  0.00  0.00            0
+ATOM    156    H   1     1       6.882   9.027  18.948  0.00  0.00            0
+ATOM    157    O   1     1      10.806  14.431  21.328  0.00  0.00            0
+ATOM    158    H   1     1       9.177  13.531  20.670  0.00  0.00            0
+ATOM    159    H   1     1      11.344  15.696  20.448  0.00  0.00            0
+ATOM    160    O   1     1       9.237  13.928  30.341  0.00  0.00            0
+ATOM    161    H   1     1      10.779  14.839  30.522  0.00  0.00            0
+ATOM    162    H   1     1       9.965  13.192  28.899  0.00  0.00            0
+ATOM    163    O   1     1      10.918  21.707   1.864  0.00  0.00            0
+ATOM    164    H   1     1      10.280  23.449   2.279  0.00  0.00            0
+ATOM    165    H   1     1      12.708  21.456   1.749  0.00  0.00            0
+ATOM    166    O   1     1       9.353  16.125  13.927  0.00  0.00            0
+ATOM    167    H   1     1       9.938  17.594  14.618  0.00  0.00            0
+ATOM    168    H   1     1       9.518  16.360  12.244  0.00  0.00            0
+ATOM    169    O   1     1      10.371  11.107  14.268  0.00  0.00            0
+ATOM    170    H   1     1       9.644  10.406  15.859  0.00  0.00            0
+ATOM    171    H   1     1       9.434  12.523  14.117  0.00  0.00            0
+ATOM    172    O   1     1       3.351  22.769  20.196  0.00  0.00            0
+ATOM    173    H   1     1       2.055  23.686  21.503  0.00  0.00            0
+ATOM    174    H   1     1       2.452  21.401  19.413  0.00  0.00            0
+ATOM    175    O   1     1       6.836  21.329  23.199  0.00  0.00            0
+ATOM    176    H   1     1       8.249  20.848  22.320  0.00  0.00            0
+ATOM    177    H   1     1       5.668  21.841  21.886  0.00  0.00            0
+ATOM    178    O   1     1       4.604  15.649  30.043  0.00  0.00            0
+ATOM    179    H   1     1       6.453  15.217  30.207  0.00  0.00            0
+ATOM    180    H   1     1       3.822  14.762  31.562  0.00  0.00            0
+ATOM    181    O   1     1       7.125  19.976   9.421  0.00  0.00            0
+ATOM    182    H   1     1       5.918  20.453  10.730  0.00  0.00            0
+ATOM    183    H   1     1       8.099  21.496   9.491  0.00  0.00            0
+ATOM    184    O   1     1       9.063  25.912  13.186  0.00  0.00            0
+ATOM    185    H   1     1      10.350  26.572  12.367  0.00  0.00            0
+ATOM    186    H   1     1       9.680  24.367  13.697  0.00  0.00            0
+ATOM    187    O   1     1       8.022  22.343  17.042  0.00  0.00            0
+ATOM    188    H   1     1       9.144  23.367  18.074  0.00  0.00            0
+ATOM    189    H   1     1       6.562  23.462  16.852  0.00  0.00            0
+ATOM    190    O   1     1      10.762  26.285  19.963  0.00  0.00            0
+ATOM    191    H   1     1      11.036  27.966  20.538  0.00  0.00            0
+ATOM    192    H   1     1      11.078  25.401  21.456  0.00  0.00            0
+ATOM    193    O   1     1       9.158  22.902  28.391  0.00  0.00            0
+ATOM    194    H   1     1       8.219  23.528  27.085  0.00  0.00            0
+ATOM    195    H   1     1       8.089  21.760  29.509  0.00  0.00            0
+ATOM    196    O   1     1       6.219  20.158  31.921  0.00  0.00            0
+ATOM    197    H   1     1       5.635  18.511  31.161  0.00  0.00            0
+ATOM    198    H   1     1       7.530  19.624  33.071  0.00  0.00            0
+ATOM    199    O   1     1      11.191  31.509   2.617  0.00  0.00            0
+ATOM    200    H   1     1      10.460  32.214   4.108  0.00  0.00            0
+ATOM    201    H   1     1      13.176  31.751   2.577  0.00  0.00            0
+ATOM    202    O   1     1       4.748   0.055   8.605  0.00  0.00            0
+ATOM    203    H   1     1       5.380   0.517  10.183  0.00  0.00            0
+ATOM    204    H   1     1       6.050  -0.306   7.480  0.00  0.00            0
+ATOM    205    O   1     1       8.695  30.809  15.731  0.00  0.00            0
+ATOM    206    H   1     1       9.189  32.103  14.495  0.00  0.00            0
+ATOM    207    H   1     1       8.447  29.069  14.868  0.00  0.00            0
+ATOM    208    O   1     1      10.128  31.402  20.766  0.00  0.00            0
+ATOM    209    H   1     1       9.456  30.905  19.155  0.00  0.00            0
+ATOM    210    H   1     1       9.020  32.731  21.415  0.00  0.00            0
+ATOM    211    O   1     1      12.238  30.162  25.837  0.00  0.00            0
+ATOM    212    H   1     1      11.418  30.908  27.110  0.00  0.00            0
+ATOM    213    H   1     1      12.396  31.331  24.678  0.00  0.00            0
+ATOM    214    O   1     1      10.395  32.537  30.624  0.00  0.00            0
+ATOM    215    H   1     1      11.042  34.339  30.751  0.00  0.00            0
+ATOM    216    H   1     1      11.378  31.486  31.538  0.00  0.00            0
+ATOM    217    O   1     1      10.438   3.626   5.087  0.00  0.00            0
+ATOM    218    H   1     1      12.435   4.082   5.136  0.00  0.00            0
+ATOM    219    H   1     1       9.822   4.284   6.681  0.00  0.00            0
+ATOM    220    O   1     1      14.762   3.401  13.776  0.00  0.00            0
+ATOM    221    H   1     1      16.518   3.824  13.376  0.00  0.00            0
+ATOM    222    H   1     1      13.752   4.757  12.964  0.00  0.00            0
+ATOM    223    O   1     1      12.382   1.012  17.643  0.00  0.00            0
+ATOM    224    H   1     1      13.346   1.997  16.444  0.00  0.00            0
+ATOM    225    H   1     1      11.931   2.133  18.998  0.00  0.00            0
+ATOM    226    O   1     1      15.278   1.293  24.559  0.00  0.00            0
+ATOM    227    H   1     1      16.071   0.946  26.365  0.00  0.00            0
+ATOM    228    H   1     1      15.794   0.199  23.499  0.00  0.00            0
+ATOM    229    O   1     1      22.226  31.627  24.712  0.00  0.00            0
+ATOM    230    H   1     1      23.338  32.595  23.876  0.00  0.00            0
+ATOM    231    H   1     1      22.161  30.053  24.132  0.00  0.00            0
+ATOM    232    O   1     1      15.640   1.847  32.717  0.00  0.00            0
+ATOM    233    H   1     1      17.488   2.473  31.874  0.00  0.00            0
+ATOM    234    H   1     1      16.403   0.869  34.267  0.00  0.00            0
+ATOM    235    O   1     1      14.858  10.199   2.754  0.00  0.00            0
+ATOM    236    H   1     1      13.360  10.712   2.282  0.00  0.00            0
+ATOM    237    H   1     1      14.560   9.316   4.559  0.00  0.00            0
+ATOM    238    O   1     1      15.717   8.469  10.739  0.00  0.00            0
+ATOM    239    H   1     1      17.323   9.581  10.875  0.00  0.00            0
+ATOM    240    H   1     1      14.574   9.631  10.221  0.00  0.00            0
+ATOM    241    O   1     1      15.248  10.398  16.525  0.00  0.00            0
+ATOM    242    H   1     1      16.324   9.181  16.149  0.00  0.00            0
+ATOM    243    H   1     1      14.172  10.488  15.098  0.00  0.00            0
+ATOM    244    O   1     1      13.226   8.438  20.801  0.00  0.00            0
+ATOM    245    H   1     1      14.043   8.996  19.295  0.00  0.00            0
+ATOM    246    H   1     1      14.661   7.802  22.093  0.00  0.00            0
+ATOM    247    O   1     1      10.173  10.961  25.875  0.00  0.00            0
+ATOM    248    H   1     1      11.477  10.223  26.940  0.00  0.00            0
+ATOM    249    H   1     1      11.269  10.738  24.343  0.00  0.00            0
+ATOM    250    O   1     1      12.792   7.737  29.173  0.00  0.00            0
+ATOM    251    H   1     1      12.199   6.038  29.475  0.00  0.00            0
+ATOM    252    H   1     1      14.427   7.450  29.617  0.00  0.00            0
+ATOM    253    O   1     1      15.180  19.498   3.578  0.00  0.00            0
+ATOM    254    H   1     1      14.883  17.596   4.080  0.00  0.00            0
+ATOM    255    H   1     1      16.754  19.579   2.626  0.00  0.00            0
+ATOM    256    O   1     1      12.517  11.093   7.701  0.00  0.00            0
+ATOM    257    H   1     1      12.224  12.778   7.555  0.00  0.00            0
+ATOM    258    H   1     1      11.150  10.393   7.057  0.00  0.00            0
+ATOM    259    O   1     1      16.266  16.271  10.758  0.00  0.00            0
+ATOM    260    H   1     1      16.507  15.795  12.768  0.00  0.00            0
+ATOM    261    H   1     1      17.725  16.977  10.292  0.00  0.00            0
+ATOM    262    O   1     1      14.069  18.399  18.897  0.00  0.00            0
+ATOM    263    H   1     1      15.513  17.523  18.155  0.00  0.00            0
+ATOM    264    H   1     1      14.958  18.709  20.673  0.00  0.00            0
+ATOM    265    O   1     1      14.099  15.480  25.510  0.00  0.00            0
+ATOM    266    H   1     1      13.698  16.872  26.938  0.00  0.00            0
+ATOM    267    H   1     1      12.567  15.379  24.444  0.00  0.00            0
+ATOM    268    O   1     1      13.309  17.574  30.292  0.00  0.00            0
+ATOM    269    H   1     1      14.937  16.934  30.810  0.00  0.00            0
+ATOM    270    H   1     1      13.969  19.494  30.012  0.00  0.00            0
+ATOM    271    O   1     1      18.371  23.257   0.925  0.00  0.00            0
+ATOM    272    H   1     1      19.479  23.480   2.321  0.00  0.00            0
+ATOM    273    H   1     1      19.087  24.325  -0.369  0.00  0.00            0
+ATOM    274    O   1     1      12.100  21.730  11.355  0.00  0.00            0
+ATOM    275    H   1     1      13.141  22.287  12.743  0.00  0.00            0
+ATOM    276    H   1     1      13.467  22.236  10.244  0.00  0.00            0
+ATOM    277    O   1     1      12.163  23.290  23.597  0.00  0.00            0
+ATOM    278    H   1     1      11.324  22.736  24.949  0.00  0.00            0
+ATOM    279    H   1     1      13.882  22.872  23.840  0.00  0.00            0
+ATOM    280    O   1     1      20.173  26.761  22.628  0.00  0.00            0
+ATOM    281    H   1     1      20.206  26.532  20.792  0.00  0.00            0
+ATOM    282    H   1     1      21.556  25.742  23.389  0.00  0.00            0
+ATOM    283    O   1     1      16.701  21.165  22.605  0.00  0.00            0
+ATOM    284    H   1     1      18.028  20.686  23.848  0.00  0.00            0
+ATOM    285    H   1     1      17.104  22.866  21.949  0.00  0.00            0
+ATOM    286    O   1     1      11.391  26.461  33.705  0.00  0.00            0
+ATOM    287    H   1     1       9.841  27.192  34.048  0.00  0.00            0
+ATOM    288    H   1     1      11.776  25.540  35.243  0.00  0.00            0
+ATOM    289    O   1     1       9.898  25.989   4.553  0.00  0.00            0
+ATOM    290    H   1     1       8.902  26.131   6.039  0.00  0.00            0
+ATOM    291    H   1     1      10.287  27.806   4.376  0.00  0.00            0
+ATOM    292    O   1     1      14.308  26.960  10.877  0.00  0.00            0
+ATOM    293    H   1     1      15.302  27.405  12.173  0.00  0.00            0
+ATOM    294    H   1     1      15.463  26.151   9.633  0.00  0.00            0
+ATOM    295    O   1     1      13.433  22.960  16.904  0.00  0.00            0
+ATOM    296    H   1     1      13.409  24.131  18.132  0.00  0.00            0
+ATOM    297    H   1     1      13.624  21.191  17.520  0.00  0.00            0
+ATOM    298    O   1     1      16.409  26.768  26.875  0.00  0.00            0
+ATOM    299    H   1     1      17.590  26.987  25.431  0.00  0.00            0
+ATOM    300    H   1     1      14.751  27.703  26.230  0.00  0.00            0
+ATOM    301    O   1     1      14.405  22.733  29.892  0.00  0.00            0
+ATOM    302    H   1     1      15.423  23.079  28.494  0.00  0.00            0
+ATOM    303    H   1     1      12.826  23.259  29.416  0.00  0.00            0
+ATOM    304    O   1     1       6.905  29.408   0.749  0.00  0.00            0
+ATOM    305    H   1     1       8.428  30.483   1.567  0.00  0.00            0
+ATOM    306    H   1     1       6.353  30.814  -0.444  0.00  0.00            0
+ATOM    307    O   1     1       9.189  34.159   6.509  0.00  0.00            0
+ATOM    308    H   1     1      10.198  34.193   8.002  0.00  0.00            0
+ATOM    309    H   1     1       9.890  35.692   5.785  0.00  0.00            0
+ATOM    310    O   1     1      14.256  32.316   9.369  0.00  0.00            0
+ATOM    311    H   1     1      15.733  32.867   9.486  0.00  0.00            0
+ATOM    312    H   1     1      14.754  30.670  10.090  0.00  0.00            0
+ATOM    313    O   1     1      14.714  30.841  16.516  0.00  0.00            0
+ATOM    314    H   1     1      13.748  29.551  17.279  0.00  0.00            0
+ATOM    315    H   1     1      13.218  31.933  16.614  0.00  0.00            0
+ATOM    316    O   1     1      18.409  33.641  20.611  0.00  0.00            0
+ATOM    317    H   1     1      19.601  32.274  21.115  0.00  0.00            0
+ATOM    318    H   1     1      17.360  32.655  19.518  0.00  0.00            0
+ATOM    319    O   1     1      16.062  28.638  32.207  0.00  0.00            0
+ATOM    320    H   1     1      14.648  27.958  33.253  0.00  0.00            0
+ATOM    321    H   1     1      15.752  28.014  30.522  0.00  0.00            0
+ATOM    322    O   1     1      16.200  30.895   1.473  0.00  0.00            0
+ATOM    323    H   1     1      16.626  29.968  -0.130  0.00  0.00            0
+ATOM    324    H   1     1      17.167  29.833   2.927  0.00  0.00            0
+ATOM    325    O   1     1      20.278   3.529   6.048  0.00  0.00            0
+ATOM    326    H   1     1      20.977   3.611   4.575  0.00  0.00            0
+ATOM    327    H   1     1      21.312   4.513   7.251  0.00  0.00            0
+ATOM    328    O   1     1      23.079   5.778  10.408  0.00  0.00            0
+ATOM    329    H   1     1      24.650   6.259  10.838  0.00  0.00            0
+ATOM    330    H   1     1      22.342   7.609  10.178  0.00  0.00            0
+ATOM    331    O   1     1      19.581   2.031  12.110  0.00  0.00            0
+ATOM    332    H   1     1      19.039   1.082  10.440  0.00  0.00            0
+ATOM    333    H   1     1      21.141   2.991  11.851  0.00  0.00            0
+ATOM    334    O   1     1      22.005   3.223  23.178  0.00  0.00            0
+ATOM    335    H   1     1      21.429   4.090  24.554  0.00  0.00            0
+ATOM    336    H   1     1      20.654   1.791  22.711  0.00  0.00            0
+ATOM    337    O   1     1      16.630   6.422  23.792  0.00  0.00            0
+ATOM    338    H   1     1      16.219   4.804  24.406  0.00  0.00            0
+ATOM    339    H   1     1      17.066   7.128  25.282  0.00  0.00            0
+ATOM    340    O   1     1      21.676   5.564  28.158  0.00  0.00            0
+ATOM    341    H   1     1      20.658   6.717  29.185  0.00  0.00            0
+ATOM    342    H   1     1      23.413   5.828  28.996  0.00  0.00            0
+ATOM    343    O   1     1      15.257   5.265   5.626  0.00  0.00            0
+ATOM    344    H   1     1      16.914   4.519   5.490  0.00  0.00            0
+ATOM    345    H   1     1      15.144   6.150   6.972  0.00  0.00            0
+ATOM    346    O   1     1      20.137  11.082  10.437  0.00  0.00            0
+ATOM    347    H   1     1      20.021  10.947   8.733  0.00  0.00            0
+ATOM    348    H   1     1      21.025  12.555  10.853  0.00  0.00            0
+ATOM    349    O   1     1      23.089  14.627  12.437  0.00  0.00            0
+ATOM    350    H   1     1      24.716  15.254  12.736  0.00  0.00            0
+ATOM    351    H   1     1      23.284  13.228  13.653  0.00  0.00            0
+ATOM    352    O   1     1      24.083  12.649  22.566  0.00  0.00            0
+ATOM    353    H   1     1      22.397  12.663  23.042  0.00  0.00            0
+ATOM    354    H   1     1      24.901  13.851  23.565  0.00  0.00            0
+ATOM    355    O   1     1      17.865   7.909  30.036  0.00  0.00            0
+ATOM    356    H   1     1      17.509   8.045  31.982  0.00  0.00            0
+ATOM    357    H   1     1      18.078   9.582  29.318  0.00  0.00            0
+ATOM    358    O   1     1      18.824   8.486   0.104  0.00  0.00            0
+ATOM    359    H   1     1      19.997  10.191  -0.057  0.00  0.00            0
+ATOM    360    H   1     1      17.077   8.998   0.779  0.00  0.00            0
+ATOM    361    O   1     1      20.122   9.143   5.343  0.00  0.00            0
+ATOM    362    H   1     1      19.373   8.819   3.821  0.00  0.00            0
+ATOM    363    H   1     1      21.998   8.776   5.128  0.00  0.00            0
+ATOM    364    O   1     1      16.413  14.459   5.855  0.00  0.00            0
+ATOM    365    H   1     1      15.536  13.007   5.239  0.00  0.00            0
+ATOM    366    H   1     1      16.006  14.725   7.737  0.00  0.00            0
+ATOM    367    O   1     1      17.561  15.066  15.654  0.00  0.00            0
+ATOM    368    H   1     1      17.575  13.398  16.055  0.00  0.00            0
+ATOM    369    H   1     1      18.978  15.828  16.400  0.00  0.00            0
+ATOM    370    O   1     1      26.374  17.047  24.817  0.00  0.00            0
+ATOM    371    H   1     1      27.983  17.098  25.632  0.00  0.00            0
+ATOM    372    H   1     1      25.629  18.751  24.919  0.00  0.00            0
+ATOM    373    O   1     1      19.784  12.960  28.706  0.00  0.00            0
+ATOM    374    H   1     1      21.662  13.055  28.871  0.00  0.00            0
+ATOM    375    H   1     1      19.545  14.070  27.143  0.00  0.00            0
+ATOM    376    O   1     1      17.891  16.733  32.499  0.00  0.00            0
+ATOM    377    H   1     1      18.327  15.240  31.277  0.00  0.00            0
+ATOM    378    H   1     1      18.633  18.335  31.693  0.00  0.00            0
+ATOM    379    O   1     1      23.733  23.024   1.663  0.00  0.00            0
+ATOM    380    H   1     1      24.800  24.052   2.776  0.00  0.00            0
+ATOM    381    H   1     1      24.693  22.618   0.198  0.00  0.00            0
+ATOM    382    O   1     1      20.789  18.440   9.443  0.00  0.00            0
+ATOM    383    H   1     1      20.766  17.257   7.881  0.00  0.00            0
+ATOM    384    H   1     1      21.896  17.345  10.385  0.00  0.00            0
+ATOM    385    O   1     1      21.574  17.493  17.838  0.00  0.00            0
+ATOM    386    H   1     1      20.597  18.955  17.218  0.00  0.00            0
+ATOM    387    H   1     1      22.538  16.874  16.251  0.00  0.00            0
+ATOM    388    O   1     1      19.168  14.748  24.131  0.00  0.00            0
+ATOM    389    H   1     1      19.711  16.390  23.712  0.00  0.00            0
+ATOM    390    H   1     1      17.429  14.695  24.403  0.00  0.00            0
+ATOM    391    O   1     1      22.149  20.198  24.977  0.00  0.00            0
+ATOM    392    H   1     1      21.639  20.924  26.486  0.00  0.00            0
+ATOM    393    H   1     1      22.656  21.657  24.411  0.00  0.00            0
+ATOM    394    O   1     1      20.565  20.792  29.600  0.00  0.00            0
+ATOM    395    H   1     1      22.264  20.409  30.214  0.00  0.00            0
+ATOM    396    H   1     1      20.548  22.408  30.597  0.00  0.00            0
+ATOM    397    O   1     1      20.802  26.547   9.615  0.00  0.00            0
+ATOM    398    H   1     1      20.099  27.984   8.338  0.00  0.00            0
+ATOM    399    H   1     1      21.277  27.539  11.325  0.00  0.00            0
+ATOM    400    O   1     1      16.283  23.589   7.779  0.00  0.00            0
+ATOM    401    H   1     1      16.093  21.973   6.712  0.00  0.00            0
+ATOM    402    H   1     1      17.901  22.971   8.154  0.00  0.00            0
+ATOM    403    O   1     1      18.469  29.798  13.568  0.00  0.00            0
+ATOM    404    H   1     1      19.712  31.216  13.506  0.00  0.00            0
+ATOM    405    H   1     1      16.872  30.343  14.396  0.00  0.00            0
+ATOM    406    O   1     1      18.790  21.712  16.060  0.00  0.00            0
+ATOM    407    H   1     1      19.878  23.090  16.485  0.00  0.00            0
+ATOM    408    H   1     1      17.201  22.326  15.819  0.00  0.00            0
+ATOM    409    O   1     1      21.747  26.084  16.349  0.00  0.00            0
+ATOM    410    H   1     1      20.783  27.021  15.300  0.00  0.00            0
+ATOM    411    H   1     1      22.705  27.328  17.206  0.00  0.00            0
+ATOM    412    O   1     1      20.769  26.211  32.050  0.00  0.00            0
+ATOM    413    H   1     1      21.488  27.404  33.328  0.00  0.00            0
+ATOM    414    H   1     1      18.989  26.710  32.145  0.00  0.00            0
+ATOM    415    O   1     1      19.820  29.181   5.559  0.00  0.00            0
+ATOM    416    H   1     1      20.991  29.509   4.109  0.00  0.00            0
+ATOM    417    H   1     1      19.431  31.018   6.221  0.00  0.00            0
+ATOM    418    O   1     1      19.240  33.867   7.993  0.00  0.00            0
+ATOM    419    H   1     1      19.107  35.039   6.604  0.00  0.00            0
+ATOM    420    H   1     1      20.697  33.671   9.063  0.00  0.00            0
+ATOM    421    O   1     1      22.511  34.976  15.793  0.00  0.00            0
+ATOM    422    H   1     1      23.716  36.163  16.603  0.00  0.00            0
+ATOM    423    H   1     1      21.699  36.150  14.467  0.00  0.00            0
+ATOM    424    O   1     1      22.622  30.284  19.069  0.00  0.00            0
+ATOM    425    H   1     1      22.049  31.351  17.725  0.00  0.00            0
+ATOM    426    H   1     1      24.411  30.773  19.576  0.00  0.00            0
+ATOM    427    O   1     1      18.639  33.611  28.369  0.00  0.00            0
+ATOM    428    H   1     1      18.226  32.159  29.103  0.00  0.00            0
+ATOM    429    H   1     1      19.906  33.008  27.158  0.00  0.00            0
+ATOM    430    O   1     1      22.520   1.325  31.926  0.00  0.00            0
+ATOM    431    H   1     1      22.803   2.668  30.796  0.00  0.00            0
+ATOM    432    H   1     1      21.045   0.425  31.122  0.00  0.00            0
+ATOM    433    O   1     1      21.754   3.789   1.159  0.00  0.00            0
+ATOM    434    H   1     1      22.085   2.785  -0.180  0.00  0.00            0
+ATOM    435    H   1     1      20.850   5.175   0.610  0.00  0.00            0
+ATOM    436    O   1     1      28.457   5.539  12.133  0.00  0.00            0
+ATOM    437    H   1     1      29.489   4.390  11.182  0.00  0.00            0
+ATOM    438    H   1     1      29.161   7.131  12.587  0.00  0.00            0
+ATOM    439    O   1     1      22.495   5.966  17.324  0.00  0.00            0
+ATOM    440    H   1     1      24.377   5.379  17.393  0.00  0.00            0
+ATOM    441    H   1     1      21.906   5.491  18.857  0.00  0.00            0
+ATOM    442    O   1     1      28.128   3.304  22.287  0.00  0.00            0
+ATOM    443    H   1     1      28.123   2.999  20.491  0.00  0.00            0
+ATOM    444    H   1     1      26.533   3.355  22.876  0.00  0.00            0
+ATOM    445    O   1     1      28.378  10.455  27.266  0.00  0.00            0
+ATOM    446    H   1     1      30.019  10.292  28.051  0.00  0.00            0
+ATOM    447    H   1     1      28.635  10.039  25.463  0.00  0.00            0
+ATOM    448    O   1     1      27.031   8.353  34.806  0.00  0.00            0
+ATOM    449    H   1     1      26.116   9.984  34.571  0.00  0.00            0
+ATOM    450    H   1     1      28.685   8.951  34.739  0.00  0.00            0
+ATOM    451    O   1     1      24.951   8.160   4.454  0.00  0.00            0
+ATOM    452    H   1     1      25.930   9.616   5.160  0.00  0.00            0
+ATOM    453    H   1     1      25.947   7.994   2.724  0.00  0.00            0
+ATOM    454    O   1     1      26.937  12.436   6.869  0.00  0.00            0
+ATOM    455    H   1     1      25.492  13.284   6.708  0.00  0.00            0
+ATOM    456    H   1     1      27.689  13.332   8.266  0.00  0.00            0
+ATOM    457    O   1     1      23.365  11.214  16.933  0.00  0.00            0
+ATOM    458    H   1     1      22.247   9.744  16.789  0.00  0.00            0
+ATOM    459    H   1     1      23.264  12.035  18.539  0.00  0.00            0
+ATOM    460    O   1     1      28.321   8.759  22.158  0.00  0.00            0
+ATOM    461    H   1     1      27.662   6.895  22.482  0.00  0.00            0
+ATOM    462    H   1     1      26.971   9.710  21.902  0.00  0.00            0
+ATOM    463    O   1     1      27.071   6.109  29.555  0.00  0.00            0
+ATOM    464    H   1     1      27.591   7.663  28.857  0.00  0.00            0
+ATOM    465    H   1     1      27.304   6.320  31.261  0.00  0.00            0
+ATOM    466    O   1     1      22.474  11.704  34.640  0.00  0.00            0
+ATOM    467    H   1     1      22.752  13.304  35.584  0.00  0.00            0
+ATOM    468    H   1     1      22.840  12.090  33.030  0.00  0.00            0
+ATOM    469    O   1     1      21.656  14.971   5.615  0.00  0.00            0
+ATOM    470    H   1     1      21.690  15.860   3.977  0.00  0.00            0
+ATOM    471    H   1     1      19.964  14.225   5.774  0.00  0.00            0
+ATOM    472    O   1     1      28.539  21.492   9.820  0.00  0.00            0
+ATOM    473    H   1     1      27.288  22.181   8.688  0.00  0.00            0
+ATOM    474    H   1     1      28.065  22.420  11.602  0.00  0.00            0
+ATOM    475    O   1     1      28.364  16.020  11.109  0.00  0.00            0
+ATOM    476    H   1     1      30.033  16.649  12.089  0.00  0.00            0
+ATOM    477    H   1     1      28.456  17.440  10.082  0.00  0.00            0
+ATOM    478    O   1     1       0.054  13.686  18.103  0.00  0.00            0
+ATOM    479    H   1     1      -1.714  12.928  18.841  0.00  0.00            0
+ATOM    480    H   1     1       1.008  12.429  17.383  0.00  0.00            0
+ATOM    481    O   1     1      24.636  12.894  29.957  0.00  0.00            0
+ATOM    482    H   1     1      25.906  13.914  31.183  0.00  0.00            0
+ATOM    483    H   1     1      25.641  11.609  29.162  0.00  0.00            0
+ATOM    484    O   1     1      21.548  17.250   0.749  0.00  0.00            0
+ATOM    485    H   1     1      21.843  19.026   0.905  0.00  0.00            0
+ATOM    486    H   1     1      20.385  16.716  -0.697  0.00  0.00            0
+ATOM    487    O   1     1      26.095  27.274   4.520  0.00  0.00            0
+ATOM    488    H   1     1      27.889  26.458   4.505  0.00  0.00            0
+ATOM    489    H   1     1      25.648  26.970   6.165  0.00  0.00            0
+ATOM    490    O   1     1      23.610  22.515   8.008  0.00  0.00            0
+ATOM    491    H   1     1      22.653  21.187   8.739  0.00  0.00            0
+ATOM    492    H   1     1      22.286  24.095   8.444  0.00  0.00            0
+ATOM    493    O   1     1      27.355  18.929  18.180  0.00  0.00            0
+ATOM    494    H   1     1      27.200  20.349  17.155  0.00  0.00            0
+ATOM    495    H   1     1      25.579  18.322  18.770  0.00  0.00            0
+ATOM    496    O   1     1      26.765  23.633  14.444  0.00  0.00            0
+ATOM    497    H   1     1      27.441  25.298  13.651  0.00  0.00            0
+ATOM    498    H   1     1      25.086  24.256  14.749  0.00  0.00            0
+ATOM    499    O   1     1      31.478  20.769  20.986  0.00  0.00            0
+ATOM    500    H   1     1      30.440  22.509  21.135  0.00  0.00            0
+ATOM    501    H   1     1      30.567  19.656  20.043  0.00  0.00            0
+ATOM    502    O   1     1      24.812  20.412  32.668  0.00  0.00            0
+ATOM    503    H   1     1      26.242  21.478  31.874  0.00  0.00            0
+ATOM    504    H   1     1      25.787  19.023  33.158  0.00  0.00            0
+ATOM    505    O   1     1      22.105  29.076   0.928  0.00  0.00            0
+ATOM    506    H   1     1      23.296  27.923   1.739  0.00  0.00            0
+ATOM    507    H   1     1      22.623  30.994   0.882  0.00  0.00            0
+ATOM    508    O   1     1      29.572  31.256   8.626  0.00  0.00            0
+ATOM    509    H   1     1      30.795  30.203   7.736  0.00  0.00            0
+ATOM    510    H   1     1      28.277  31.519   7.260  0.00  0.00            0
+ATOM    511    O   1     1      31.817  34.843  18.283  0.00  0.00            0
+ATOM    512    H   1     1      32.438  34.389  16.474  0.00  0.00            0
+ATOM    513    H   1     1      32.743  36.422  18.341  0.00  0.00            0
+ATOM    514    O   1     1      27.915  25.601  19.033  0.00  0.00            0
+ATOM    515    H   1     1      29.358  26.561  19.190  0.00  0.00            0
+ATOM    516    H   1     1      28.148  24.429  17.530  0.00  0.00            0
+ATOM    517    O   1     1      24.548  24.654  24.025  0.00  0.00            0
+ATOM    518    H   1     1      25.528  25.635  22.824  0.00  0.00            0
+ATOM    519    H   1     1      25.300  25.200  25.645  0.00  0.00            0
+ATOM    520    O   1     1      28.540  22.922  30.370  0.00  0.00            0
+ATOM    521    H   1     1      27.414  24.096  29.781  0.00  0.00            0
+ATOM    522    H   1     1      29.674  23.914  31.873  0.00  0.00            0
+ATOM    523    O   1     1      24.969  33.623   1.014  0.00  0.00            0
+ATOM    524    H   1     1      26.521  33.058   1.518  0.00  0.00            0
+ATOM    525    H   1     1      24.990  34.322  -0.683  0.00  0.00            0
+ATOM    526    O   1     1      23.075  32.171  11.324  0.00  0.00            0
+ATOM    527    H   1     1      23.316  32.775  13.097  0.00  0.00            0
+ATOM    528    H   1     1      24.460  33.203  10.662  0.00  0.00            0
+ATOM    529    O   1     1      27.497   2.736  17.224  0.00  0.00            0
+ATOM    530    H   1     1      28.397   3.415  15.715  0.00  0.00            0
+ATOM    531    H   1     1      28.234   1.233  17.412  0.00  0.00            0
+ATOM    532    O   1     1      26.369  33.060  22.077  0.00  0.00            0
+ATOM    533    H   1     1      26.170  34.746  22.264  0.00  0.00            0
+ATOM    534    H   1     1      27.592  32.404  23.321  0.00  0.00            0
+ATOM    535    O   1     1      30.221  30.950  25.843  0.00  0.00            0
+ATOM    536    H   1     1      30.305  29.038  26.208  0.00  0.00            0
+ATOM    537    H   1     1      30.363  31.979  27.414  0.00  0.00            0
+ATOM    538    O   1     1      24.973  26.732  28.607  0.00  0.00            0
+ATOM    539    H   1     1      25.385  28.369  29.248  0.00  0.00            0
+ATOM    540    H   1     1      23.330  26.597  29.234  0.00  0.00            0
+ATOM    541    O   1     1      32.165   4.857   2.258  0.00  0.00            0
+ATOM    542    H   1     1      32.417   6.195   1.157  0.00  0.00            0
+ATOM    543    H   1     1      32.615   3.727   1.112  0.00  0.00            0
+ATOM    544    O   1     1      28.067   3.533   5.217  0.00  0.00            0
+ATOM    545    H   1     1      26.960   4.447   4.158  0.00  0.00            0
+ATOM    546    H   1     1      29.875   3.863   4.448  0.00  0.00            0
+ATOM    547    O   1     1      33.279   2.782  13.028  0.00  0.00            0
+ATOM    548    H   1     1      33.708   3.955  11.817  0.00  0.00            0
+ATOM    549    H   1     1      33.656   3.545  14.631  0.00  0.00            0
+ATOM    550    O   1     1      34.278   4.944  17.492  0.00  0.00            0
+ATOM    551    H   1     1      33.438   6.563  17.876  0.00  0.00            0
+ATOM    552    H   1     1      34.906   4.452  18.995  0.00  0.00            0
+ATOM    553    O   1     1      32.363   1.908  26.092  0.00  0.00            0
+ATOM    554    H   1     1      31.941   1.683  24.268  0.00  0.00            0
+ATOM    555    H   1     1      33.850   1.390  26.904  0.00  0.00            0
+ATOM    556    O   1     1      27.982   0.418  28.241  0.00  0.00            0
+ATOM    557    H   1     1      27.516   2.080  28.309  0.00  0.00            0
+ATOM    558    H   1     1      29.593   0.176  27.299  0.00  0.00            0
+ATOM    559    O   1     1      28.845  14.672   2.724  0.00  0.00            0
+ATOM    560    H   1     1      27.963  13.930   4.139  0.00  0.00            0
+ATOM    561    H   1     1      30.386  15.714   3.379  0.00  0.00            0
+ATOM    562    O   1     1      28.083  10.618  14.298  0.00  0.00            0
+ATOM    563    H   1     1      28.623  12.160  13.293  0.00  0.00            0
+ATOM    564    H   1     1      26.486  11.015  15.379  0.00  0.00            0
+ATOM    565    O   1     1      33.867  10.545  13.306  0.00  0.00            0
+ATOM    566    H   1     1      35.165   9.612  13.810  0.00  0.00            0
+ATOM    567    H   1     1      33.615  10.270  11.513  0.00  0.00            0
+ATOM    568    O   1     1      31.790   9.696  18.223  0.00  0.00            0
+ATOM    569    H   1     1      30.484   9.334  19.421  0.00  0.00            0
+ATOM    570    H   1     1      30.834  10.096  16.929  0.00  0.00            0
+ATOM    571    O   1     1      30.141  15.006  21.532  0.00  0.00            0
+ATOM    572    H   1     1      28.565  15.594  22.099  0.00  0.00            0
+ATOM    573    H   1     1      30.942  14.253  23.077  0.00  0.00            0
+ATOM    574    O   1     1      32.798  10.732  30.680  0.00  0.00            0
+ATOM    575    H   1     1      34.073   9.528  30.799  0.00  0.00            0
+ATOM    576    H   1     1      32.991  11.512  28.983  0.00  0.00            0
+ATOM    577    O   1     1      33.652  16.265   5.086  0.00  0.00            0
+ATOM    578    H   1     1      35.399  16.239   4.730  0.00  0.00            0
+ATOM    579    H   1     1      33.503  17.939   5.631  0.00  0.00            0
+ATOM    580    O   1     1      31.947  10.799   7.943  0.00  0.00            0
+ATOM    581    H   1     1      29.894  10.549   7.619  0.00  0.00            0
+ATOM    582    H   1     1      32.271  12.414   7.075  0.00  0.00            0
+ATOM    583    O   1     1       0.329  15.516  11.746  0.00  0.00            0
+ATOM    584    H   1     1      -0.446  14.249  12.939  0.00  0.00            0
+ATOM    585    H   1     1      -0.685  17.018  11.935  0.00  0.00            0
+ATOM    586    O   1     1       4.262  19.165  14.308  0.00  0.00            0
+ATOM    587    H   1     1       3.579  17.691  14.920  0.00  0.00            0
+ATOM    588    H   1     1       5.723  19.183  15.204  0.00  0.00            0
+ATOM    589    O   1     1      32.995  13.546  25.948  0.00  0.00            0
+ATOM    590    H   1     1      32.167  15.060  26.787  0.00  0.00            0
+ATOM    591    H   1     1      34.425  13.800  25.007  0.00  0.00            0
+ATOM    592    O   1     1       1.773  13.524  34.037  0.00  0.00            0
+ATOM    593    H   1     1       0.227  14.409  33.446  0.00  0.00            0
+ATOM    594    H   1     1       2.167  14.670  35.511  0.00  0.00            0
+ATOM    595    O   1     1      33.029  20.529   7.247  0.00  0.00            0
+ATOM    596    H   1     1      34.388  21.414   8.003  0.00  0.00            0
+ATOM    597    H   1     1      31.451  20.831   8.182  0.00  0.00            0
+ATOM    598    O   1     1       2.037  24.250  10.251  0.00  0.00            0
+ATOM    599    H   1     1       3.743  25.008   9.876  0.00  0.00            0
+ATOM    600    H   1     1       1.894  25.043  11.903  0.00  0.00            0
+ATOM    601    O   1     1      32.753  19.259  13.976  0.00  0.00            0
+ATOM    602    H   1     1      32.792  20.886  13.792  0.00  0.00            0
+ATOM    603    H   1     1      34.334  18.799  14.976  0.00  0.00            0
+ATOM    604    O   1     1       0.396  18.673  18.699  0.00  0.00            0
+ATOM    605    H   1     1      -1.211  18.950  19.127  0.00  0.00            0
+ATOM    606    H   1     1       0.469  16.977  18.436  0.00  0.00            0
+ATOM    607    O   1     1      30.855  18.370  27.959  0.00  0.00            0
+ATOM    608    H   1     1      29.759  19.681  28.690  0.00  0.00            0
+ATOM    609    H   1     1      32.103  19.477  26.763  0.00  0.00            0
+ATOM    610    O   1     1      27.723  15.992  33.091  0.00  0.00            0
+ATOM    611    H   1     1      29.390  16.423  32.192  0.00  0.00            0
+ATOM    612    H   1     1      27.801  15.859  34.804  0.00  0.00            0
+ATOM    613    O   1     1      31.068  27.895   3.348  0.00  0.00            0
+ATOM    614    H   1     1      32.517  27.825   4.610  0.00  0.00            0
+ATOM    615    H   1     1      31.529  29.459   2.324  0.00  0.00            0
+ATOM    616    O   1     1      35.039  28.008   6.663  0.00  0.00            0
+ATOM    617    H   1     1      35.966  26.934   7.683  0.00  0.00            0
+ATOM    618    H   1     1      36.055  28.336   5.336  0.00  0.00            0
+ATOM    619    O   1     1      29.356  28.196  13.025  0.00  0.00            0
+ATOM    620    H   1     1      29.210  29.335  14.589  0.00  0.00            0
+ATOM    621    H   1     1      28.874  29.629  11.867  0.00  0.00            0
+ATOM    622    O   1     1      32.386  28.434  18.961  0.00  0.00            0
+ATOM    623    H   1     1      33.368  28.574  20.411  0.00  0.00            0
+ATOM    624    H   1     1      33.410  27.406  17.949  0.00  0.00            0
+ATOM    625    O   1     1      30.898  25.390  25.799  0.00  0.00            0
+ATOM    626    H   1     1      32.369  25.913  24.580  0.00  0.00            0
+ATOM    627    H   1     1      31.317  24.075  27.029  0.00  0.00            0
+ATOM    628    O   1     1      32.259  25.611  33.104  0.00  0.00            0
+ATOM    629    H   1     1      32.238  25.736  34.806  0.00  0.00            0
+ATOM    630    H   1     1      33.920  25.042  32.775  0.00  0.00            0
+ATOM    631    O   1     1      30.290  32.645   1.341  0.00  0.00            0
+ATOM    632    H   1     1      29.949  32.793  -0.430  0.00  0.00            0
+ATOM    633    H   1     1      31.762  33.340   1.847  0.00  0.00            0
+ATOM    634    O   1     1      25.536  34.235   6.469  0.00  0.00            0
+ATOM    635    H   1     1      25.716  36.059   6.651  0.00  0.00            0
+ATOM    636    H   1     1      25.283  33.866   4.895  0.00  0.00            0
+ATOM    637    O   1     1      31.674  33.161  13.106  0.00  0.00            0
+ATOM    638    H   1     1      31.793  34.863  13.281  0.00  0.00            0
+ATOM    639    H   1     1      30.425  32.928  11.783  0.00  0.00            0
+ATOM    640    O   1     1      33.844  32.668  22.296  0.00  0.00            0
+ATOM    641    H   1     1      32.750  32.234  23.524  0.00  0.00            0
+ATOM    642    H   1     1      32.917  32.875  20.736  0.00  0.00            0
+ATOM    643    O   1     1      31.603  30.542  30.805  0.00  0.00            0
+ATOM    644    H   1     1      33.451  30.804  30.468  0.00  0.00            0
+ATOM    645    H   1     1      31.575  28.816  31.756  0.00  0.00            0
+ATOM    646    O   1     1      26.295  31.235  30.599  0.00  0.00            0
+ATOM    647    H   1     1      27.834  30.515  30.607  0.00  0.00            0
+ATOM    648    H   1     1      26.362  32.920  29.856  0.00  0.00            0
+END
diff --git a/tools/i-pi/examples/lammps/h2o-pimd-rpc/data.water_longrange b/tools/i-pi/examples/lammps/h2o-pimd-rpc/data.water_longrange
new file mode 100644
index 0000000000000000000000000000000000000000..a08e2d741ebe6a71409025b362f5bfd5c436c983
--- /dev/null
+++ b/tools/i-pi/examples/lammps/h2o-pimd-rpc/data.water_longrange
@@ -0,0 +1,1331 @@
+LAMMPS Description
+ 
+         648  atoms
+         432  bonds
+         216  angles
+ 
+           2  atom types
+           1  bond types
+           1  angle types
+ 
+         0 35.233 xlo xhi
+         0 35.233 ylo yhi
+         0 35.233 zlo zhi
+ 
+Masses
+ 
+  1 15.9994
+  2  1.0080
+ 
+Bond Coeffs
+ 
+  1    0 1.78 
+ 
+Angle Coeffs
+ 
+  1    0  107.400000
+
+Atoms
+ 
+ 1 1 1 -1.1128       3.84600000       5.67200001       1.32300000
+ 2 1 2 0.5564        2.97900000       7.05400000       0.85700000
+ 3 1 2 0.5564        5.52500001       5.69700001       0.45100000
+ 4 2 1 -1.1128      34.55700001      34.34100000       3.07800000
+ 5 2 2 0.5564       33.72200001      34.68900000       4.84000001
+ 6 2 2 0.5564       36.02900000      33.22000001       3.71100001
+ 7 3 1 -1.1128       5.59100000       1.96299999      13.47700000
+ 8 3 2 0.5564        7.26500000       1.86400000      13.85100001
+ 9 3 2 0.5564        5.00899999       3.55500000      13.91599999
+ 10 4 1 -1.1128       1.06000000       2.06100000      21.71800001
+ 11 4 2 0.5564        0.75700000       0.26100000      21.82000000
+ 12 4 2 0.5564        0.21300001       3.01299999      23.04700000
+ 13 5 1 -1.1128       1.20000000       1.33700000      29.00599999
+ 14 5 2 0.5564        0.81800000       1.88399999      30.73200000
+ 15 5 2 0.5564        2.88300001       1.82500000      29.01100000
+ 16 6 1 -1.1128       1.33100001       1.38599999      34.30600001
+ 17 6 2 0.5564        2.39200001       2.89799999      34.84600000
+ 18 6 2 0.5564        0.81400000       0.53200001      35.83600000
+ 19 7 1 -1.1128      31.45100000      10.20100000       0.72599999
+ 20 7 2 0.5564       32.28199999      10.87699999      -0.75000000
+ 21 7 2 0.5564       30.91999999      11.59399999       1.67700000
+ 22 8 1 -1.1128       0.83600000      10.80800001       4.29800000
+ 23 8 2 0.5564        0.30500000      10.64300001       2.79300000
+ 24 8 2 0.5564       -0.35600001      10.33400000       5.52400000
+ 25 9 1 -1.1128      34.38100001       5.97900000       9.19400000
+ 26 9 2 0.5564       33.61600000       7.67300000       8.85700000
+ 27 9 2 0.5564       35.11500000       5.25999999       7.61800001
+ 28 10 1 -1.1128      33.21200000       6.48000000      24.27799999
+ 29 10 2 0.5564       31.62400000       6.90800001      23.52100001
+ 30 10 2 0.5564       32.54400000       4.99000000      24.98200000
+ 31 11 1 -1.1128       1.99200000       9.00199999      26.86300000
+ 32 11 2 0.5564        1.85600000      10.17500000      25.57899999
+ 33 11 2 0.5564        0.51900000       8.09899999      26.38599999
+ 34 12 1 -1.1128       2.05400000       8.66000000      32.51499999
+ 35 12 2 0.5564        2.16699999       8.72700000      30.49400000
+ 36 12 2 0.5564        2.37400001      10.51300000      33.03799999
+ 37 13 1 -1.1128       3.40200000      16.63900001       3.00800000
+ 38 13 2 0.5564        4.12700001      15.87200001       4.44600001
+ 39 13 2 0.5564        2.90500001      18.33899999       3.15999999
+ 40 14 1 -1.1128       4.22200000      15.44400000       8.07200000
+ 41 14 2 0.5564        5.21100000      16.75600000       8.29900001
+ 42 14 2 0.5564        2.56000000      15.49200001       8.86000000
+ 43 15 1 -1.1128       2.83100000       9.24599999      16.48800000
+ 44 15 2 0.5564        2.86900001       8.02300001      18.05000000
+ 45 15 2 0.5564        3.96000000       8.46700001      15.15400000
+ 46 16 1 -1.1128       5.56300000       6.00300000      20.90700000
+ 47 16 2 0.5564        4.65300000       4.63800000      21.48000000
+ 48 16 2 0.5564        6.40500000       6.20800000      22.52899999
+ 49 17 1 -1.1128       2.08700001      13.37000000      22.91299999
+ 50 17 2 0.5564        2.83200000      14.80400001      23.42200000
+ 51 17 2 0.5564        1.43400000      13.50900000      21.19599999
+ 52 18 1 -1.1128       3.36900000      17.88600000      25.10900001
+ 53 18 2 0.5564        3.65500000      17.20000000      26.76599999
+ 54 18 2 0.5564        4.77200001      18.97699999      24.49999999
+ 55 19 1 -1.1128      34.76400000      20.80300000       0.94800001
+ 56 19 2 0.5564       35.20999999      21.26700001       2.81599999
+ 57 19 2 0.5564       35.96200001      21.72599999       0.13099999
+ 58 20 1 -1.1128       2.83600000      24.17799999      15.22900000
+ 59 20 2 0.5564        2.79500000      22.34599999      14.87600001
+ 60 20 2 0.5564        2.41399999      24.11500000      17.13000001
+ 61 21 1 -1.1128      33.00000000      24.48100000      15.23000000
+ 62 21 2 0.5564       34.63999999      24.80400001      15.01299999
+ 63 21 2 0.5564       32.40100000      25.76400000      14.29500001
+ 64 22 1 -1.1128       0.40399999      26.77900001      23.39999999
+ 65 22 2 0.5564        1.35300001      27.24800000      24.98700001
+ 66 22 2 0.5564        1.54600001      28.05000000      22.31700001
+ 67 23 1 -1.1128      34.22200000      21.38000000      25.41799999
+ 68 23 2 0.5564       35.66899999      20.15100000      25.31700001
+ 69 23 2 0.5564       32.96000000      21.18000000      23.99200000
+ 70 24 1 -1.1128      33.25900000      17.43800000      32.48000000
+ 71 24 2 0.5564       33.31399999      18.78200000      33.88300001
+ 72 24 2 0.5564       32.74300001      18.18100001      30.87100000
+ 73 25 1 -1.1128       4.46300000      21.97900000       3.93600000
+ 74 25 2 0.5564        5.85600000      23.08400001       3.39999999
+ 75 25 2 0.5564        3.98600000      22.18000000       5.60200000
+ 76 26 1 -1.1128       6.25800000      25.85100001       8.52000000
+ 77 26 2 0.5564        5.76700000      27.69300001       8.47600000
+ 78 26 2 0.5564        7.20200001      25.50600000      10.18600000
+ 79 27 1 -1.1128       0.60099999      29.73699999      12.74700001
+ 80 27 2 0.5564       -0.68500000      30.84200000      12.34999999
+ 81 27 2 0.5564        1.33600000      30.71600000      14.03099999
+ 82 28 1 -1.1128       7.56300000      28.19100001      24.33300000
+ 83 28 2 0.5564        9.20100000      28.82800000      24.68400000
+ 84 28 2 0.5564        7.38100001      27.62100000      22.79900000
+ 85 29 1 -1.1128       3.65300000      27.10900001      27.77200001
+ 86 29 2 0.5564        5.12600000      27.01500000      26.77200001
+ 87 29 2 0.5564        3.03099999      28.75600000      27.69800000
+ 88 30 1 -1.1128       2.59600001      23.99100001      32.47600000
+ 89 30 2 0.5564        2.87900000      24.79099999      30.85899999
+ 90 30 2 0.5564        4.00300000      22.91299999      32.70099999
+ 91 31 1 -1.1128       3.08300000      31.31700001       3.64399999
+ 92 31 2 0.5564        4.13300000      30.58900001       2.53900001
+ 93 31 2 0.5564        4.21800000      32.17300001       5.03700001
+ 94 32 1 -1.1128       4.66100001      30.55500000       9.36799999
+ 95 32 2 0.5564        3.18400001      29.84300000      10.13200000
+ 96 32 2 0.5564        4.35800000      32.44800000       9.12600000
+ 97 33 1 -1.1128       3.46499999      32.53700000      15.77800000
+ 98 33 2 0.5564        5.07200000      31.81899999      15.90300000
+ 99 33 2 0.5564        4.05500001      34.25699999      15.28400000
+ 100 34 1 -1.1128       4.21500000      29.15299999      20.31700001
+ 101 34 2 0.5564        3.65799999      30.17600000      18.84200000
+ 102 34 2 0.5564        4.95899999      30.29100000      21.44900001
+ 103 35 1 -1.1128       1.12600000      31.33300000      28.76800001
+ 104 35 2 0.5564        2.39500000      31.12399999      29.92500000
+ 105 35 2 0.5564        0.76800001      33.09199999      28.89799999
+ 106 36 1 -1.1128       4.88100000      32.61600000      32.30200000
+ 107 36 2 0.5564        6.58800000      32.91100000      31.72500001
+ 108 36 2 0.5564        4.48599999      34.03700001      33.24900001
+ 109 37 1 -1.1128       8.96200001       5.55600000       0.15100000
+ 110 37 2 0.5564        9.65200000       6.99100001       0.85899999
+ 111 37 2 0.5564        9.17300001       4.47700000       1.64500000
+ 112 38 1 -1.1128       1.83300001       3.51799999       5.67900001
+ 113 38 2 0.5564        2.88900000       2.73100000       6.78800000
+ 114 38 2 0.5564        2.78900000       4.18700000       4.14700000
+ 115 39 1 -1.1128      10.51000001      34.72599999      13.07300001
+ 116 39 2 0.5564       11.91999999      34.11800000      11.91900001
+ 117 39 2 0.5564       11.29500001      34.96800000      14.74100000
+ 118 40 1 -1.1128       7.21200000       0.04199999      22.45399999
+ 119 40 2 0.5564        6.92400000       0.47000000      24.17200000
+ 120 40 2 0.5564        8.31900000       1.22799999      21.65300000
+ 121 41 1 -1.1128       6.36500000       2.01000000      27.54400000
+ 122 41 2 0.5564        5.95400000       3.58500000      26.85199999
+ 123 41 2 0.5564        7.75800001       2.54900000      28.69600000
+ 124 42 1 -1.1128      10.83300001       3.14000000      30.78699999
+ 125 42 2 0.5564       12.69700001       2.97500000      30.86700000
+ 126 42 2 0.5564       10.38899999       3.70000001      32.40399999
+ 127 43 1 -1.1128       8.68400000       9.34200001       3.91200001
+ 128 43 2 0.5564        6.98500000       9.25600001       4.77299999
+ 129 43 2 0.5564        8.68400000      10.80899999       3.01100000
+ 130 44 1 -1.1128       4.87299999       9.91900001       7.70700000
+ 131 44 2 0.5564        3.69800000       9.77100000       6.19400000
+ 132 44 2 0.5564        5.04700000      11.96100000       7.62400000
+ 133 45 1 -1.1128      10.03099999       5.01800000       9.69900000
+ 134 45 2 0.5564        9.67500001       3.38199999      10.34000000
+ 135 45 2 0.5564        9.13200000       5.98700001      10.82500000
+ 136 46 1 -1.1128      11.24599999       3.91800000      21.92900000
+ 137 46 2 0.5564       12.61400001       2.77000000      22.34100000
+ 138 46 2 0.5564       12.07300001       5.68600001      21.49699999
+ 139 47 1 -1.1128       6.82500000       7.16400000      25.70799999
+ 140 47 2 0.5564        8.03600000       8.37400001      25.98000001
+ 141 47 2 0.5564        5.20600001       7.90000000      25.89099999
+ 142 48 1 -1.1128      10.17099999      12.81100001       0.29500001
+ 143 48 2 0.5564       10.03300000      12.81800000      -1.60900000
+ 144 48 2 0.5564        9.87999999      14.49200001       0.48000000
+ 145 49 1 -1.1128       8.19000000      17.40200000       1.25299999
+ 146 49 2 0.5564        9.47199999      18.53100000       1.25299999
+ 147 49 2 0.5564        6.35100000      17.81700000       1.56800001
+ 148 50 1 -1.1128      11.23300000      16.18800001       8.29900001
+ 149 50 2 0.5564       10.29100000      17.68900000       8.16600001
+ 150 50 2 0.5564       12.76800001      17.12300001       8.73299999
+ 151 51 1 -1.1128       6.38599999       8.00199999      12.84600000
+ 152 51 2 0.5564        7.70099999       8.89600000      13.65500000
+ 153 51 2 0.5564        5.59100000       8.87699999      11.51900000
+ 154 52 1 -1.1128       8.18400001      10.41900000      18.84799999
+ 155 52 2 0.5564        9.49800000       9.43400000      19.90500001
+ 156 52 2 0.5564        6.88200000       9.02699999      18.94800001
+ 157 53 1 -1.1128      10.80600000      14.43100000      21.32799999
+ 158 53 2 0.5564        9.17700001      13.53100000      20.67000000
+ 159 53 2 0.5564       11.34400000      15.69600000      20.44800000
+ 160 54 1 -1.1128       9.23700000      13.92800000      30.34100000
+ 161 54 2 0.5564       10.77900001      14.83900000      30.52199999
+ 162 54 2 0.5564        9.96500000      13.19199999      28.89900000
+ 163 55 1 -1.1128      10.91800000      21.70700000       1.86400000
+ 164 55 2 0.5564       10.28000000      23.44900001       2.27900000
+ 165 55 2 0.5564       12.70799999      21.45600000       1.74900000
+ 166 56 1 -1.1128       9.35300001      16.12500000      13.92699999
+ 167 56 2 0.5564        9.93799999      17.59399999      14.61800001
+ 168 56 2 0.5564        9.51799999      16.36000001      12.24400000
+ 169 57 1 -1.1128      10.37099999      11.10700000      14.26800000
+ 170 57 2 0.5564        9.64399999      10.40600001      15.85899999
+ 171 57 2 0.5564        9.43400000      12.52300000      14.11699999
+ 172 58 1 -1.1128       3.35100000      22.76899999      20.19599999
+ 173 58 2 0.5564        2.05500001      23.68600001      21.50300001
+ 174 58 2 0.5564        2.45200000      21.40100000      19.41300000
+ 175 59 1 -1.1128       6.83600000      21.32900000      23.19899999
+ 176 59 2 0.5564        8.24900001      20.84799999      22.32000001
+ 177 59 2 0.5564        5.66800001      21.84099999      21.88600000
+ 178 60 1 -1.1128       4.60399999      15.64900000      30.04300000
+ 179 60 2 0.5564        6.45300001      15.21699999      30.20700000
+ 180 60 2 0.5564        3.82200001      14.76199999      31.56200000
+ 181 61 1 -1.1128       7.12500000      19.97600001       9.42100001
+ 182 61 2 0.5564        5.91800000      20.45300001      10.72999999
+ 183 61 2 0.5564        8.09899999      21.49600001       9.49100000
+ 184 62 1 -1.1128       9.06299999      25.91200001      13.18600000
+ 185 62 2 0.5564       10.34999999      26.57199999      12.36700001
+ 186 62 2 0.5564        9.67999999      24.36700001      13.69700001
+ 187 63 1 -1.1128       8.02200000      22.34299999      17.04199999
+ 188 63 2 0.5564        9.14400000      23.36700001      18.07399999
+ 189 63 2 0.5564        6.56200000      23.46200000      16.85199999
+ 190 64 1 -1.1128      10.76199999      26.28499999      19.96299999
+ 191 64 2 0.5564       11.03600000      27.96599999      20.53800000
+ 192 64 2 0.5564       11.07800000      25.40100000      21.45600000
+ 193 65 1 -1.1128       9.15800000      22.90199999      28.39100000
+ 194 65 2 0.5564        8.21900000      23.52800001      27.08499999
+ 195 65 2 0.5564        8.08900000      21.76000000      29.50900000
+ 196 66 1 -1.1128       6.21900000      20.15800000      31.92100000
+ 197 66 2 0.5564        5.63500000      18.51099999      31.16100000
+ 198 66 2 0.5564        7.53000000      19.62400000      33.07100000
+ 199 67 1 -1.1128      11.19100001      31.50900000       2.61700000
+ 200 67 2 0.5564       10.46000001      32.21399999       4.10800000
+ 201 67 2 0.5564       13.17600000      31.75099999       2.57700000
+ 202 68 1 -1.1128       4.74799999       0.05500001       8.60500000
+ 203 68 2 0.5564        5.38000000       0.51700000      10.18300000
+ 204 68 2 0.5564        6.05000000      -0.30600001       7.48000000
+ 205 69 1 -1.1128       8.69500000      30.80899999      15.73100000
+ 206 69 2 0.5564        9.18899999      32.10300000      14.49500000
+ 207 69 2 0.5564        8.44699999      29.06900000      14.86800000
+ 208 70 1 -1.1128      10.12799999      31.40200000      20.76599999
+ 209 70 2 0.5564        9.45600000      30.90500001      19.15500000
+ 210 70 2 0.5564        9.01999999      32.73100000      21.41500000
+ 211 71 1 -1.1128      12.23800001      30.16200000      25.83699999
+ 212 71 2 0.5564       11.41799999      30.90800001      27.10999999
+ 213 71 2 0.5564       12.39600001      31.33100001      24.67800000
+ 214 72 1 -1.1128      10.39500000      32.53700000      30.62400000
+ 215 72 2 0.5564       11.04199999      34.33899999      30.75099999
+ 216 72 2 0.5564       11.37800001      31.48599999      31.53800000
+ 217 73 1 -1.1128      10.43800000       3.62599999       5.08700001
+ 218 73 2 0.5564       12.43500001       4.08200000       5.13600000
+ 219 73 2 0.5564        9.82200001       4.28400000       6.68100000
+ 220 74 1 -1.1128      14.76199999       3.40100000      13.77599999
+ 221 74 2 0.5564       16.51799999       3.82400000      13.37600000
+ 222 74 2 0.5564       13.75200000       4.75700000      12.96400000
+ 223 75 1 -1.1128      12.38199999       1.01200001      17.64300001
+ 224 75 2 0.5564       13.34599999       1.99700000      16.44400000
+ 225 75 2 0.5564       11.93100000       2.13300000      18.99800001
+ 226 76 1 -1.1128      15.27799999       1.29300000      24.55900000
+ 227 76 2 0.5564       16.07100000       0.94600000      26.36500000
+ 228 76 2 0.5564       15.79399999       0.19899999      23.49900000
+ 229 77 1 -1.1128      22.22600000      31.62700000      24.71199999
+ 230 77 2 0.5564       23.33800001      32.59500000      23.87600001
+ 231 77 2 0.5564       22.16100000      30.05300000      24.13200000
+ 232 78 1 -1.1128      15.63999999       1.84700001      32.71700000
+ 233 78 2 0.5564       17.48800000       2.47300000      31.87400000
+ 234 78 2 0.5564       16.40300001       0.86900001      34.26700001
+ 235 79 1 -1.1128      14.85800001      10.19899999       2.75400001
+ 236 79 2 0.5564       13.36000001      10.71199999       2.28199999
+ 237 79 2 0.5564       14.56000000       9.31600000       4.55900000
+ 238 80 1 -1.1128      15.71700000       8.46900000      10.73900000
+ 239 80 2 0.5564       17.32300000       9.58100000      10.87500000
+ 240 80 2 0.5564       14.57400000       9.63100000      10.22099999
+ 241 81 1 -1.1128      15.24800000      10.39800000      16.52500001
+ 242 81 2 0.5564       16.32400001       9.18100001      16.14899999
+ 243 81 2 0.5564       14.17200000      10.48800000      15.09800001
+ 244 82 1 -1.1128      13.22600000       8.43800000      20.80100001
+ 245 82 2 0.5564       14.04300000       8.99600000      19.29500001
+ 246 82 2 0.5564       14.66100001       7.80200000      22.09300000
+ 247 83 1 -1.1128      10.17300001      10.96100000      25.87500000
+ 248 83 2 0.5564       11.47700000      10.22300000      26.94000000
+ 249 83 2 0.5564       11.26900000      10.73800000      24.34299999
+ 250 84 1 -1.1128      12.79200000       7.73699999      29.17300001
+ 251 84 2 0.5564       12.19899999       6.03799999      29.47499999
+ 252 84 2 0.5564       14.42700000       7.44999999      29.61700000
+ 253 85 1 -1.1128      15.18000000      19.49800000       3.57800000
+ 254 85 2 0.5564       14.88300001      17.59600001       4.08000001
+ 255 85 2 0.5564       16.75400001      19.57899999       2.62599999
+ 256 86 1 -1.1128      12.51700000      11.09300000       7.70099999
+ 257 86 2 0.5564       12.22400001      12.77800000       7.55500000
+ 258 86 2 0.5564       11.15000000      10.39299999       7.05700000
+ 259 87 1 -1.1128      16.26600000      16.27099999      10.75800001
+ 260 87 2 0.5564       16.50700001      15.79500000      12.76800001
+ 261 87 2 0.5564       17.72500001      16.97699999      10.29200001
+ 262 88 1 -1.1128      14.06900000      18.39900001      18.89700000
+ 263 88 2 0.5564       15.51300000      17.52300000      18.15500000
+ 264 88 2 0.5564       14.95800001      18.70900000      20.67300000
+ 265 89 1 -1.1128      14.09899999      15.48000000      25.51000001
+ 266 89 2 0.5564       13.69800000      16.87200001      26.93799999
+ 267 89 2 0.5564       12.56700000      15.37900000      24.44400000
+ 268 90 1 -1.1128      13.30900000      17.57400000      30.29200001
+ 269 90 2 0.5564       14.93700001      16.93399999      30.81000000
+ 270 90 2 0.5564       13.96900001      19.49400000      30.01200001
+ 271 91 1 -1.1128      18.37099999      23.25699999       0.92500000
+ 272 91 2 0.5564       19.47899999      23.48000000       2.32099999
+ 273 91 2 0.5564       19.08700001      24.32499999      -0.36900000
+ 274 92 1 -1.1128      12.10000000      21.72999999      11.35500000
+ 275 92 2 0.5564       13.14100001      22.28700000      12.74300001
+ 276 92 2 0.5564       13.46700001      22.23600000      10.24400000
+ 277 93 1 -1.1128      12.16300001      23.29000000      23.59699999
+ 278 93 2 0.5564       11.32400001      22.73600001      24.94900000
+ 279 93 2 0.5564       13.88200000      22.87200001      23.84000001
+ 280 94 1 -1.1128      20.17300001      26.76100001      22.62800000
+ 281 94 2 0.5564       20.20600001      26.53200001      20.79200000
+ 282 94 2 0.5564       21.55600000      25.74200000      23.38899999
+ 283 95 1 -1.1128      16.70099999      21.16500000      22.60500000
+ 284 95 2 0.5564       18.02800000      20.68600001      23.84799999
+ 285 95 2 0.5564       17.10400000      22.86599999      21.94900000
+ 286 96 1 -1.1128      11.39100000      26.46099999      33.70499999
+ 287 96 2 0.5564        9.84099999      27.19199999      34.04800001
+ 288 96 2 0.5564       11.77599999      25.53999999      35.24300000
+ 289 97 1 -1.1128       9.89799999      25.98900000       4.55300001
+ 290 97 2 0.5564        8.90199999      26.13099999       6.03900000
+ 291 97 2 0.5564       10.28700000      27.80600000       4.37600000
+ 292 98 1 -1.1128      14.30800000      26.96000000      10.87699999
+ 293 98 2 0.5564       15.30200000      27.40500000      12.17300001
+ 294 98 2 0.5564       15.46300000      26.15100000       9.63299999
+ 295 99 1 -1.1128      13.43300000      22.96000000      16.90400000
+ 296 99 2 0.5564       13.40900000      24.13099999      18.13200000
+ 297 99 2 0.5564       13.62400000      21.19100001      17.52000000
+ 298 100 1 -1.1128      16.40900000      26.76800001      26.87500000
+ 299 100 2 0.5564       17.58999999      26.98700001      25.43100000
+ 300 100 2 0.5564       14.75099999      27.70300000      26.23000000
+ 301 101 1 -1.1128      14.40500000      22.73299999      29.89200000
+ 302 101 2 0.5564       15.42300000      23.07900000      28.49400000
+ 303 101 2 0.5564       12.82600001      23.25900000      29.41600000
+ 304 102 1 -1.1128       6.90500001      29.40800000       0.74900000
+ 305 102 2 0.5564        8.42800001      30.48300000       1.56700000
+ 306 102 2 0.5564        6.35300001      30.81400000      -0.44400000
+ 307 103 1 -1.1128       9.18899999      34.15900001       6.50900000
+ 308 103 2 0.5564       10.19800000      34.19300000       8.00199999
+ 309 103 2 0.5564        9.89000001      35.69200000       5.78500000
+ 310 104 1 -1.1128      14.25600001      32.31600000       9.36900000
+ 311 104 2 0.5564       15.73299999      32.86700000       9.48599999
+ 312 104 2 0.5564       14.75400001      30.67000000      10.09000000
+ 313 105 1 -1.1128      14.71400000      30.84099999      16.51600000
+ 314 105 2 0.5564       13.74799999      29.55099999      17.27900000
+ 315 105 2 0.5564       13.21800000      31.93300001      16.61400001
+ 316 106 1 -1.1128      18.40900000      33.64100000      20.61100001
+ 317 106 2 0.5564       19.60099999      32.27400001      21.11500000
+ 318 106 2 0.5564       17.36000001      32.65500000      19.51799999
+ 319 107 1 -1.1128      16.06200001      28.63800000      32.20700000
+ 320 107 2 0.5564       14.64800000      27.95800001      33.25299999
+ 321 107 2 0.5564       15.75200000      28.01400000      30.52199999
+ 322 108 1 -1.1128      16.20000000      30.89499999       1.47300000
+ 323 108 2 0.5564       16.62599999      29.96800000      -0.13000001
+ 324 108 2 0.5564       17.16699999      29.83300001       2.92699999
+ 325 109 1 -1.1128      20.27799999       3.52899999       6.04800001
+ 326 109 2 0.5564       20.97699999       3.61100001       4.57500001
+ 327 109 2 0.5564       21.31200000       4.51300000       7.25100000
+ 328 110 1 -1.1128      23.07900000       5.77800000      10.40800000
+ 329 110 2 0.5564       24.65000001       6.25900000      10.83800000
+ 330 110 2 0.5564       22.34200001       7.60900000      10.17799999
+ 331 111 1 -1.1128      19.58100000       2.03099999      12.10999999
+ 332 111 2 0.5564       19.03900000       1.08200000      10.44000000
+ 333 111 2 0.5564       21.14100001       2.99100001      11.85100001
+ 334 112 1 -1.1128      22.00500001       3.22300000      23.17799999
+ 335 112 2 0.5564       21.42899999       4.09000000      24.55399999
+ 336 112 2 0.5564       20.65400001       1.79099999      22.71100001
+ 337 113 1 -1.1128      16.63000000       6.42200000      23.79200000
+ 338 113 2 0.5564       16.21900000       4.80400001      24.40600001
+ 339 113 2 0.5564       17.06600001       7.12799999      25.28199999
+ 340 114 1 -1.1128      21.67599999       5.56400001      28.15800000
+ 341 114 2 0.5564       20.65799999       6.71700000      29.18499999
+ 342 114 2 0.5564       23.41300000       5.82800000      28.99600000
+ 343 115 1 -1.1128      15.25699999       5.26500000       5.62599999
+ 344 115 2 0.5564       16.91400000       4.51900000       5.48999999
+ 345 115 2 0.5564       15.14400000       6.15000000       6.97200000
+ 346 116 1 -1.1128      20.13700000      11.08200000      10.43700000
+ 347 116 2 0.5564       20.02100000      10.94700000       8.73299999
+ 348 116 2 0.5564       21.02500000      12.55500000      10.85300000
+ 349 117 1 -1.1128      23.08900000      14.62700000      12.43700000
+ 350 117 2 0.5564       24.71600000      15.25400000      12.73600001
+ 351 117 2 0.5564       23.28400000      13.22799999      13.65300000
+ 352 118 1 -1.1128      24.08300000      12.64900000      22.56600000
+ 353 118 2 0.5564       22.39700000      12.66300000      23.04199999
+ 354 118 2 0.5564       24.90100001      13.85100001      23.56499999
+ 355 119 1 -1.1128      17.86500001       7.90899999      30.03600000
+ 356 119 2 0.5564       17.50900000       8.04499999      31.98200000
+ 357 119 2 0.5564       18.07800000       9.58200001      29.31799999
+ 358 120 1 -1.1128      18.82400000       8.48599999       0.10400000
+ 359 120 2 0.5564       19.99700000      10.19100001      -0.05700000
+ 360 120 2 0.5564       17.07700001       8.99800001       0.77900001
+ 361 121 1 -1.1128      20.12200000       9.14300000       5.34299999
+ 362 121 2 0.5564       19.37300000       8.81899999       3.82100000
+ 363 121 2 0.5564       21.99800001       8.77599999       5.12799999
+ 364 122 1 -1.1128      16.41300000      14.45900000       5.85499999
+ 365 122 2 0.5564       15.53599999      13.00700000       5.23899999
+ 366 122 2 0.5564       16.00599999      14.72500001       7.73699999
+ 367 123 1 -1.1128      17.56099999      15.06600001      15.65400001
+ 368 123 2 0.5564       17.57500001      13.39800000      16.05500001
+ 369 123 2 0.5564       18.97800000      15.82800000      16.39999999
+ 370 124 1 -1.1128      26.37400001      17.04700000      24.81700000
+ 371 124 2 0.5564       27.98300000      17.09800001      25.63200001
+ 372 124 2 0.5564       25.62900001      18.75099999      24.91900001
+ 373 125 1 -1.1128      19.78400000      12.96000000      28.70600000
+ 374 125 2 0.5564       21.66199999      13.05500001      28.87100000
+ 375 125 2 0.5564       19.54500000      14.06999999      27.14300000
+ 376 126 1 -1.1128      17.89099999      16.73299999      32.49900000
+ 377 126 2 0.5564       18.32700000      15.24000000      31.27700001
+ 378 126 2 0.5564       18.63299999      18.33500001      31.69300001
+ 379 127 1 -1.1128      23.73299999      23.02399999       1.66300000
+ 380 127 2 0.5564       24.80000000      24.05199999       2.77599999
+ 381 127 2 0.5564       24.69300001      22.61800001       0.19800000
+ 382 128 1 -1.1128      20.78900000      18.44000000       9.44299999
+ 383 128 2 0.5564       20.76599999      17.25699999       7.88100000
+ 384 128 2 0.5564       21.89600000      17.34500000      10.38500001
+ 385 129 1 -1.1128      21.57400000      17.49299999      17.83800000
+ 386 129 2 0.5564       20.59699999      18.95500001      17.21800000
+ 387 129 2 0.5564       22.53800000      16.87400000      16.25100000
+ 388 130 1 -1.1128      19.16800000      14.74799999      24.13099999
+ 389 130 2 0.5564       19.71100001      16.39000000      23.71199999
+ 390 130 2 0.5564       17.42899999      14.69500000      24.40300001
+ 391 131 1 -1.1128      22.14899999      20.19800000      24.97699999
+ 392 131 2 0.5564       21.63900001      20.92400000      26.48599999
+ 393 131 2 0.5564       22.65600000      21.65700001      24.41099999
+ 394 132 1 -1.1128      20.56499999      20.79200000      29.60000001
+ 395 132 2 0.5564       22.26399999      20.40900000      30.21399999
+ 396 132 2 0.5564       20.54800000      22.40800000      30.59699999
+ 397 133 1 -1.1128      20.80200000      26.54699999       9.61499999
+ 398 133 2 0.5564       20.09899999      27.98399999       8.33800001
+ 399 133 2 0.5564       21.27700001      27.53900001      11.32499999
+ 400 134 1 -1.1128      16.28300000      23.58900001       7.77900001
+ 401 134 2 0.5564       16.09300000      21.97300001       6.71199999
+ 402 134 2 0.5564       17.90100001      22.97100000       8.15400000
+ 403 135 1 -1.1128      18.46900000      29.79799999      13.56800001
+ 404 135 2 0.5564       19.71199999      31.21600000      13.50600000
+ 405 135 2 0.5564       16.87200001      30.34299999      14.39600001
+ 406 136 1 -1.1128      18.79000001      21.71199999      16.06000000
+ 407 136 2 0.5564       19.87800000      23.09000000      16.48500001
+ 408 136 2 0.5564       17.20100000      22.32600000      15.81899999
+ 409 137 1 -1.1128      21.74700001      26.08400001      16.34900001
+ 410 137 2 0.5564       20.78300001      27.02100000      15.29999999
+ 411 137 2 0.5564       22.70499999      27.32799999      17.20600001
+ 412 138 1 -1.1128      20.76899999      26.21100000      32.05000000
+ 413 138 2 0.5564       21.48800000      27.40399999      33.32799999
+ 414 138 2 0.5564       18.98900000      26.71000000      32.14500001
+ 415 139 1 -1.1128      19.82000000      29.18100001       5.55900000
+ 416 139 2 0.5564       20.99100001      29.50900000       4.10900001
+ 417 139 2 0.5564       19.43100000      31.01800000       6.22099999
+ 418 140 1 -1.1128      19.24000000      33.86700000       7.99300000
+ 419 140 2 0.5564       19.10700000      35.03900000       6.60399999
+ 420 140 2 0.5564       20.69700001      33.67100000       9.06299999
+ 421 141 1 -1.1128      22.51099999      34.97600001      15.79300000
+ 422 141 2 0.5564       23.71600000      36.16300001      16.60300000
+ 423 141 2 0.5564       21.69900000      36.15000000      14.46700001
+ 424 142 1 -1.1128      22.62199999      30.28400000      19.06900000
+ 425 142 2 0.5564       22.04899999      31.35100000      17.72500001
+ 426 142 2 0.5564       24.41099999      30.77299999      19.57599999
+ 427 143 1 -1.1128      18.63900001      33.61100001      28.36900000
+ 428 143 2 0.5564       18.22600000      32.15900001      29.10300000
+ 429 143 2 0.5564       19.90600000      33.00800000      27.15800000
+ 430 144 1 -1.1128      22.52000000       1.32499999      31.92600001
+ 431 144 2 0.5564       22.80300000       2.66800001      30.79600000
+ 432 144 2 0.5564       21.04499999       0.42499999      31.12200000
+ 433 145 1 -1.1128      21.75400001       3.78900000       1.15900001
+ 434 145 2 0.5564       22.08499999       2.78500000      -0.18000000
+ 435 145 2 0.5564       20.85000000       5.17500000       0.61000000
+ 436 146 1 -1.1128      28.45699999       5.53900001      12.13300000
+ 437 146 2 0.5564       29.48900001       4.39000000      11.18200000
+ 438 146 2 0.5564       29.16100000       7.13099999      12.58700000
+ 439 147 1 -1.1128      22.49500000       5.96599999      17.32400001
+ 440 147 2 0.5564       24.37700000       5.37900000      17.39299999
+ 441 147 2 0.5564       21.90600000       5.49100000      18.85700000
+ 442 148 1 -1.1128      28.12799999       3.30400000      22.28700000
+ 443 148 2 0.5564       28.12300001       2.99899999      20.49100000
+ 444 148 2 0.5564       26.53299999       3.35500000      22.87600001
+ 445 149 1 -1.1128      28.37800001      10.45500000      27.26600000
+ 446 149 2 0.5564       30.01900001      10.29200001      28.05100000
+ 447 149 2 0.5564       28.63500000      10.03900000      25.46300000
+ 448 150 1 -1.1128      27.03099999       8.35300001      34.80600000
+ 449 150 2 0.5564       26.11600001       9.98399999      34.57100001
+ 450 150 2 0.5564       28.68500000       8.95100001      34.73900000
+ 451 151 1 -1.1128      24.95100001       8.15999999       4.45399999
+ 452 151 2 0.5564       25.93000001       9.61600000       5.15999999
+ 453 151 2 0.5564       25.94700000       7.99400001       2.72400000
+ 454 152 1 -1.1128      26.93700001      12.43599999       6.86900001
+ 455 152 2 0.5564       25.49200001      13.28400000       6.70799999
+ 456 152 2 0.5564       27.68900000      13.33199999       8.26600000
+ 457 153 1 -1.1128      23.36500000      11.21399999      16.93300001
+ 458 153 2 0.5564       22.24700000       9.74399999      16.78900000
+ 459 153 2 0.5564       23.26399999      12.03500000      18.53900001
+ 460 154 1 -1.1128      28.32099999       8.75900000      22.15800000
+ 461 154 2 0.5564       27.66199999       6.89499999      22.48200001
+ 462 154 2 0.5564       26.97100000       9.71000000      21.90199999
+ 463 155 1 -1.1128      27.07100000       6.10900001      29.55500000
+ 464 155 2 0.5564       27.59100000       7.66300000      28.85700000
+ 465 155 2 0.5564       27.30400000       6.32000001      31.26100000
+ 466 156 1 -1.1128      22.47400000      11.70400001      34.63999999
+ 467 156 2 0.5564       22.75200000      13.30400000      35.58400000
+ 468 156 2 0.5564       22.84000001      12.09000000      33.03000001
+ 469 157 1 -1.1128      21.65600000      14.97100000       5.61499999
+ 470 157 2 0.5564       21.68999999      15.86000000       3.97699999
+ 471 157 2 0.5564       19.96400000      14.22500000       5.77400000
+ 472 158 1 -1.1128      28.53900001      21.49200001       9.82000000
+ 473 158 2 0.5564       27.28800001      22.18100001       8.68800000
+ 474 158 2 0.5564       28.06500000      22.42000000      11.60200000
+ 475 159 1 -1.1128      28.36399999      16.01999999      11.10900001
+ 476 159 2 0.5564       30.03300000      16.64900000      12.08900000
+ 477 159 2 0.5564       28.45600000      17.44000000      10.08200000
+ 478 160 1 -1.1128       0.05400000      13.68600001      18.10300000
+ 479 160 2 0.5564       -1.71400000      12.92800000      18.84099999
+ 480 160 2 0.5564        1.00800000      12.42899999      17.38300000
+ 481 161 1 -1.1128      24.63600001      12.89400001      29.95700000
+ 482 161 2 0.5564       25.90600000      13.91400000      31.18300000
+ 483 161 2 0.5564       25.64100000      11.60900000      29.16200000
+ 484 162 1 -1.1128      21.54800000      17.25000000       0.74900000
+ 485 162 2 0.5564       21.84300000      19.02600000       0.90500001
+ 486 162 2 0.5564       20.38500001      16.71600000      -0.69700001
+ 487 163 1 -1.1128      26.09499999      27.27400001       4.52000000
+ 488 163 2 0.5564       27.88900000      26.45800000       4.50500000
+ 489 163 2 0.5564       25.64800000      26.96999999       6.16500000
+ 490 164 1 -1.1128      23.61000000      22.51499999       8.00800000
+ 491 164 2 0.5564       22.65300000      21.18700000       8.73900000
+ 492 164 2 0.5564       22.28600000      24.09499999       8.44400000
+ 493 165 1 -1.1128      27.35500000      18.92900000      18.18000000
+ 494 165 2 0.5564       27.20000000      20.34900001      17.15500000
+ 495 165 2 0.5564       25.57899999      18.32200000      18.77000000
+ 496 166 1 -1.1128      26.76500001      23.63299999      14.44400000
+ 497 166 2 0.5564       27.44100000      25.29800000      13.65099999
+ 498 166 2 0.5564       25.08600000      24.25600001      14.74900000
+ 499 167 1 -1.1128      31.47800001      20.76899999      20.98600000
+ 500 167 2 0.5564       30.44000000      22.50900000      21.13499999
+ 501 167 2 0.5564       30.56700000      19.65600000      20.04300000
+ 502 168 1 -1.1128      24.81199999      20.41200000      32.66800001
+ 503 168 2 0.5564       26.24199999      21.47800001      31.87400000
+ 504 168 2 0.5564       25.78699999      19.02300001      33.15800000
+ 505 169 1 -1.1128      22.10500001      29.07600000       0.92800000
+ 506 169 2 0.5564       23.29599999      27.92299999       1.73900000
+ 507 169 2 0.5564       22.62300000      30.99400001       0.88200000
+ 508 170 1 -1.1128      29.57199999      31.25600001       8.62599999
+ 509 170 2 0.5564       30.79500000      30.20299999       7.73600001
+ 510 170 2 0.5564       28.27700001      31.51900000       7.25999999
+ 511 171 1 -1.1128      31.81700000      34.84300000      18.28300000
+ 512 171 2 0.5564       32.43800000      34.38899999      16.47400000
+ 513 171 2 0.5564       32.74300001      36.42200000      18.34100000
+ 514 172 1 -1.1128      27.91500001      25.60099999      19.03300000
+ 515 172 2 0.5564       29.35800000      26.56099999      19.19000000
+ 516 172 2 0.5564       28.14800001      24.42899999      17.53000000
+ 517 173 1 -1.1128      24.54800000      24.65400001      24.02500000
+ 518 173 2 0.5564       25.52800001      25.63500000      22.82400000
+ 519 173 2 0.5564       25.29999999      25.20000000      25.64500000
+ 520 174 1 -1.1128      28.53999999      22.92200000      30.37000000
+ 521 174 2 0.5564       27.41399999      24.09600000      29.78100000
+ 522 174 2 0.5564       29.67400000      23.91400000      31.87299999
+ 523 175 1 -1.1128      24.96900001      33.62300000       1.01400000
+ 524 175 2 0.5564       26.52100001      33.05800000       1.51799999
+ 525 175 2 0.5564       24.99000000      34.32200000      -0.68299999
+ 526 176 1 -1.1128      23.07500000      32.17099999      11.32400001
+ 527 176 2 0.5564       23.31600000      32.77500000      13.09700000
+ 528 176 2 0.5564       24.46000001      33.20299999      10.66199999
+ 529 177 1 -1.1128      27.49699999       2.73600001      17.22400001
+ 530 177 2 0.5564       28.39700000       3.41500000      15.71500001
+ 531 177 2 0.5564       28.23400001       1.23300000      17.41200000
+ 532 178 1 -1.1128      26.36900000      33.06000000      22.07700001
+ 533 178 2 0.5564       26.17000001      34.74600000      22.26399999
+ 534 178 2 0.5564       27.59200000      32.40399999      23.32099999
+ 535 179 1 -1.1128      30.22099999      30.95000000      25.84300000
+ 536 179 2 0.5564       30.30500000      29.03799999      26.20800000
+ 537 179 2 0.5564       30.36300001      31.97900000      27.41399999
+ 538 180 1 -1.1128      24.97300001      26.73200000      28.60700001
+ 539 180 2 0.5564       25.38500001      28.36900000      29.24800000
+ 540 180 2 0.5564       23.33000000      26.59699999      29.23400001
+ 541 181 1 -1.1128      32.16500000       4.85700000       2.25800000
+ 542 181 2 0.5564       32.41700001       6.19500001       1.15700000
+ 543 181 2 0.5564       32.61499999       3.72700000       1.11200000
+ 544 182 1 -1.1128      28.06699999       3.53299999       5.21699999
+ 545 182 2 0.5564       26.96000000       4.44699999       4.15800000
+ 546 182 2 0.5564       29.87500000       3.86300000       4.44800000
+ 547 183 1 -1.1128      33.27900000       2.78200000      13.02800000
+ 548 183 2 0.5564       33.70799999       3.95500001      11.81700000
+ 549 183 2 0.5564       33.65600000       3.54500000      14.63100000
+ 550 184 1 -1.1128      34.27799999       4.94400001      17.49200001
+ 551 184 2 0.5564       33.43800000       6.56300000      17.87600001
+ 552 184 2 0.5564       34.90600000       4.45200000      18.99499999
+ 553 185 1 -1.1128      32.36300001       1.90800001      26.09199999
+ 554 185 2 0.5564       31.94099999       1.68299999      24.26800000
+ 555 185 2 0.5564       33.85000000       1.39000000      26.90400000
+ 556 186 1 -1.1128      27.98200000       0.41799999      28.24100000
+ 557 186 2 0.5564       27.51600000       2.08000001      28.30900000
+ 558 186 2 0.5564       29.59300001       0.17600000      27.29900001
+ 559 187 1 -1.1128      28.84500000      14.67200001       2.72400000
+ 560 187 2 0.5564       27.96299999      13.93000001       4.13900000
+ 561 187 2 0.5564       30.38599999      15.71400000       3.37900000
+ 562 188 1 -1.1128      28.08300000      10.61800001      14.29800000
+ 563 188 2 0.5564       28.62300000      12.15999999      13.29300000
+ 564 188 2 0.5564       26.48599999      11.01500000      15.37900000
+ 565 189 1 -1.1128      33.86700000      10.54500000      13.30600001
+ 566 189 2 0.5564       35.16500000       9.61200000      13.81000000
+ 567 189 2 0.5564       33.61499999      10.27000001      11.51300000
+ 568 190 1 -1.1128      31.79000001       9.69600000      18.22300000
+ 569 190 2 0.5564       30.48400000       9.33400000      19.42100001
+ 570 190 2 0.5564       30.83399999      10.09600000      16.92900000
+ 571 191 1 -1.1128      30.14100001      15.00599999      21.53200001
+ 572 191 2 0.5564       28.56499999      15.59399999      22.09899999
+ 573 191 2 0.5564       30.94200000      14.25299999      23.07700001
+ 574 192 1 -1.1128      32.79799999      10.73200000      30.67999999
+ 575 192 2 0.5564       34.07300001       9.52800001      30.79900000
+ 576 192 2 0.5564       32.99100001      11.51200000      28.98300000
+ 577 193 1 -1.1128      33.65200000      16.26500000       5.08600000
+ 578 193 2 0.5564       35.39900001      16.23899999       4.72999999
+ 579 193 2 0.5564       33.50300001      17.93900000       5.63100000
+ 580 194 1 -1.1128      31.94700000      10.79900000       7.94300000
+ 581 194 2 0.5564       29.89400001      10.54900000       7.61899999
+ 582 194 2 0.5564       32.27099999      12.41399999       7.07500000
+ 583 195 1 -1.1128       0.32900000      15.51600000      11.74600000
+ 584 195 2 0.5564       -0.44600001      14.24900001      12.93900000
+ 585 195 2 0.5564       -0.68500000      17.01800000      11.93500000
+ 586 196 1 -1.1128       4.26200000      19.16500000      14.30800000
+ 587 196 2 0.5564        3.57899999      17.69100000      14.91999999
+ 588 196 2 0.5564        5.72299999      19.18300000      15.20400000
+ 589 197 1 -1.1128      32.99499999      13.54600001      25.94800001
+ 590 197 2 0.5564       32.16699999      15.06000000      26.78699999
+ 591 197 2 0.5564       34.42499999      13.80000000      25.00700000
+ 592 198 1 -1.1128       1.77299999      13.52400000      34.03700001
+ 593 198 2 0.5564        0.22700001      14.40900000      33.44600001
+ 594 198 2 0.5564        2.16699999      14.67000000      35.51099999
+ 595 199 1 -1.1128      33.02900000      20.52899999       7.24700000
+ 596 199 2 0.5564       34.38800000      21.41399999       8.00300000
+ 597 199 2 0.5564       31.45100000      20.83100000       8.18200000
+ 598 200 1 -1.1128       2.03700001      24.25000000      10.25100000
+ 599 200 2 0.5564        3.74300001      25.00800000       9.87600001
+ 600 200 2 0.5564        1.89400001      25.04300000      11.90300000
+ 601 201 1 -1.1128      32.75300000      19.25900000      13.97600001
+ 602 201 2 0.5564       32.79200000      20.88600000      13.79200000
+ 603 201 2 0.5564       34.33400000      18.79900000      14.97600001
+ 604 202 1 -1.1128       0.39600001      18.67300000      18.69900000
+ 605 202 2 0.5564       -1.21100000      18.95000000      19.12700001
+ 606 202 2 0.5564        0.46900000      16.97699999      18.43599999
+ 607 203 1 -1.1128      30.85499999      18.37000000      27.95899999
+ 608 203 2 0.5564       29.75900000      19.68100000      28.68999999
+ 609 203 2 0.5564       32.10300000      19.47700000      26.76300000
+ 610 204 1 -1.1128      27.72299999      15.99200000      33.09100001
+ 611 204 2 0.5564       29.39000000      16.42300000      32.19199999
+ 612 204 2 0.5564       27.80100001      15.85899999      34.80400001
+ 613 205 1 -1.1128      31.06800000      27.89499999       3.34800000
+ 614 205 2 0.5564       32.51700000      27.82500000       4.61000000
+ 615 205 2 0.5564       31.52899999      29.45900000       2.32400001
+ 616 206 1 -1.1128      35.03900000      28.00800000       6.66300000
+ 617 206 2 0.5564       35.96599999      26.93399999       7.68299999
+ 618 206 2 0.5564       36.05500001      28.33600000       5.33600000
+ 619 207 1 -1.1128      29.35600001      28.19599999      13.02500000
+ 620 207 2 0.5564       29.20999999      29.33500001      14.58900001
+ 621 207 2 0.5564       28.87400000      29.62900001      11.86700000
+ 622 208 1 -1.1128      32.38599999      28.43400000      18.96100000
+ 623 208 2 0.5564       33.36799999      28.57400000      20.41099999
+ 624 208 2 0.5564       33.41000001      27.40600001      17.94900000
+ 625 209 1 -1.1128      30.89799999      25.39000000      25.79900000
+ 626 209 2 0.5564       32.36900000      25.91299999      24.58000000
+ 627 209 2 0.5564       31.31700001      24.07500000      27.02900000
+ 628 210 1 -1.1128      32.25900000      25.61100001      33.10400000
+ 629 210 2 0.5564       32.23800001      25.73600001      34.80600000
+ 630 210 2 0.5564       33.91999999      25.04199999      32.77500000
+ 631 211 1 -1.1128      30.29000000      32.64500000       1.34100000
+ 632 211 2 0.5564       29.94900000      32.79300000      -0.43000000
+ 633 211 2 0.5564       31.76199999      33.34000000       1.84700001
+ 634 212 1 -1.1128      25.53599999      34.23499999       6.46900000
+ 635 212 2 0.5564       25.71600000      36.05900001       6.65099999
+ 636 212 2 0.5564       25.28300000      33.86599999       4.89499999
+ 637 213 1 -1.1128      31.67400000      33.16100000      13.10599999
+ 638 213 2 0.5564       31.79300000      34.86300000      13.28100001
+ 639 213 2 0.5564       30.42499999      32.92800000      11.78300001
+ 640 214 1 -1.1128      33.84400001      32.66800001      22.29599999
+ 641 214 2 0.5564       32.75000000      32.23400001      23.52400000
+ 642 214 2 0.5564       32.91700000      32.87500000      20.73600001
+ 643 215 1 -1.1128      31.60300000      30.54200000      30.80499999
+ 644 215 2 0.5564       33.45100000      30.80400001      30.46799999
+ 645 215 2 0.5564       31.57500001      28.81599999      31.75600000
+ 646 216 1 -1.1128      26.29500001      31.23499999      30.59900000
+ 647 216 2 0.5564       27.83399999      30.51499999      30.60700001
+ 648 216 2 0.5564       26.36200000      32.91999999      29.85600000
+
+Bonds
+
+ 1 1 1 2
+ 2 1 1 3
+ 3 1 4 5
+ 4 1 4 6
+ 5 1 7 8
+ 6 1 7 9
+ 7 1 10 11
+ 8 1 10 12
+ 9 1 13 14
+ 10 1 13 15
+ 11 1 16 17
+ 12 1 16 18
+ 13 1 19 20
+ 14 1 19 21
+ 15 1 22 23
+ 16 1 22 24
+ 17 1 25 26
+ 18 1 25 27
+ 19 1 28 29
+ 20 1 28 30
+ 21 1 31 32
+ 22 1 31 33
+ 23 1 34 35
+ 24 1 34 36
+ 25 1 37 38
+ 26 1 37 39
+ 27 1 40 41
+ 28 1 40 42
+ 29 1 43 44
+ 30 1 43 45
+ 31 1 46 47
+ 32 1 46 48
+ 33 1 49 50
+ 34 1 49 51
+ 35 1 52 53
+ 36 1 52 54
+ 37 1 55 56
+ 38 1 55 57
+ 39 1 58 59
+ 40 1 58 60
+ 41 1 61 62
+ 42 1 61 63
+ 43 1 64 65
+ 44 1 64 66
+ 45 1 67 68
+ 46 1 67 69
+ 47 1 70 71
+ 48 1 70 72
+ 49 1 73 74
+ 50 1 73 75
+ 51 1 76 77
+ 52 1 76 78
+ 53 1 79 80
+ 54 1 79 81
+ 55 1 82 83
+ 56 1 82 84
+ 57 1 85 86
+ 58 1 85 87
+ 59 1 88 89
+ 60 1 88 90
+ 61 1 91 92
+ 62 1 91 93
+ 63 1 94 95
+ 64 1 94 96
+ 65 1 97 98
+ 66 1 97 99
+ 67 1 100 101
+ 68 1 100 102
+ 69 1 103 104
+ 70 1 103 105
+ 71 1 106 107
+ 72 1 106 108
+ 73 1 109 110
+ 74 1 109 111
+ 75 1 112 113
+ 76 1 112 114
+ 77 1 115 116
+ 78 1 115 117
+ 79 1 118 119
+ 80 1 118 120
+ 81 1 121 122
+ 82 1 121 123
+ 83 1 124 125
+ 84 1 124 126
+ 85 1 127 128
+ 86 1 127 129
+ 87 1 130 131
+ 88 1 130 132
+ 89 1 133 134
+ 90 1 133 135
+ 91 1 136 137
+ 92 1 136 138
+ 93 1 139 140
+ 94 1 139 141
+ 95 1 142 143
+ 96 1 142 144
+ 97 1 145 146
+ 98 1 145 147
+ 99 1 148 149
+ 100 1 148 150
+ 101 1 151 152
+ 102 1 151 153
+ 103 1 154 155
+ 104 1 154 156
+ 105 1 157 158
+ 106 1 157 159
+ 107 1 160 161
+ 108 1 160 162
+ 109 1 163 164
+ 110 1 163 165
+ 111 1 166 167
+ 112 1 166 168
+ 113 1 169 170
+ 114 1 169 171
+ 115 1 172 173
+ 116 1 172 174
+ 117 1 175 176
+ 118 1 175 177
+ 119 1 178 179
+ 120 1 178 180
+ 121 1 181 182
+ 122 1 181 183
+ 123 1 184 185
+ 124 1 184 186
+ 125 1 187 188
+ 126 1 187 189
+ 127 1 190 191
+ 128 1 190 192
+ 129 1 193 194
+ 130 1 193 195
+ 131 1 196 197
+ 132 1 196 198
+ 133 1 199 200
+ 134 1 199 201
+ 135 1 202 203
+ 136 1 202 204
+ 137 1 205 206
+ 138 1 205 207
+ 139 1 208 209
+ 140 1 208 210
+ 141 1 211 212
+ 142 1 211 213
+ 143 1 214 215
+ 144 1 214 216
+ 145 1 217 218
+ 146 1 217 219
+ 147 1 220 221
+ 148 1 220 222
+ 149 1 223 224
+ 150 1 223 225
+ 151 1 226 227
+ 152 1 226 228
+ 153 1 229 230
+ 154 1 229 231
+ 155 1 232 233
+ 156 1 232 234
+ 157 1 235 236
+ 158 1 235 237
+ 159 1 238 239
+ 160 1 238 240
+ 161 1 241 242
+ 162 1 241 243
+ 163 1 244 245
+ 164 1 244 246
+ 165 1 247 248
+ 166 1 247 249
+ 167 1 250 251
+ 168 1 250 252
+ 169 1 253 254
+ 170 1 253 255
+ 171 1 256 257
+ 172 1 256 258
+ 173 1 259 260
+ 174 1 259 261
+ 175 1 262 263
+ 176 1 262 264
+ 177 1 265 266
+ 178 1 265 267
+ 179 1 268 269
+ 180 1 268 270
+ 181 1 271 272
+ 182 1 271 273
+ 183 1 274 275
+ 184 1 274 276
+ 185 1 277 278
+ 186 1 277 279
+ 187 1 280 281
+ 188 1 280 282
+ 189 1 283 284
+ 190 1 283 285
+ 191 1 286 287
+ 192 1 286 288
+ 193 1 289 290
+ 194 1 289 291
+ 195 1 292 293
+ 196 1 292 294
+ 197 1 295 296
+ 198 1 295 297
+ 199 1 298 299
+ 200 1 298 300
+ 201 1 301 302
+ 202 1 301 303
+ 203 1 304 305
+ 204 1 304 306
+ 205 1 307 308
+ 206 1 307 309
+ 207 1 310 311
+ 208 1 310 312
+ 209 1 313 314
+ 210 1 313 315
+ 211 1 316 317
+ 212 1 316 318
+ 213 1 319 320
+ 214 1 319 321
+ 215 1 322 323
+ 216 1 322 324
+ 217 1 325 326
+ 218 1 325 327
+ 219 1 328 329
+ 220 1 328 330
+ 221 1 331 332
+ 222 1 331 333
+ 223 1 334 335
+ 224 1 334 336
+ 225 1 337 338
+ 226 1 337 339
+ 227 1 340 341
+ 228 1 340 342
+ 229 1 343 344
+ 230 1 343 345
+ 231 1 346 347
+ 232 1 346 348
+ 233 1 349 350
+ 234 1 349 351
+ 235 1 352 353
+ 236 1 352 354
+ 237 1 355 356
+ 238 1 355 357
+ 239 1 358 359
+ 240 1 358 360
+ 241 1 361 362
+ 242 1 361 363
+ 243 1 364 365
+ 244 1 364 366
+ 245 1 367 368
+ 246 1 367 369
+ 247 1 370 371
+ 248 1 370 372
+ 249 1 373 374
+ 250 1 373 375
+ 251 1 376 377
+ 252 1 376 378
+ 253 1 379 380
+ 254 1 379 381
+ 255 1 382 383
+ 256 1 382 384
+ 257 1 385 386
+ 258 1 385 387
+ 259 1 388 389
+ 260 1 388 390
+ 261 1 391 392
+ 262 1 391 393
+ 263 1 394 395
+ 264 1 394 396
+ 265 1 397 398
+ 266 1 397 399
+ 267 1 400 401
+ 268 1 400 402
+ 269 1 403 404
+ 270 1 403 405
+ 271 1 406 407
+ 272 1 406 408
+ 273 1 409 410
+ 274 1 409 411
+ 275 1 412 413
+ 276 1 412 414
+ 277 1 415 416
+ 278 1 415 417
+ 279 1 418 419
+ 280 1 418 420
+ 281 1 421 422
+ 282 1 421 423
+ 283 1 424 425
+ 284 1 424 426
+ 285 1 427 428
+ 286 1 427 429
+ 287 1 430 431
+ 288 1 430 432
+ 289 1 433 434
+ 290 1 433 435
+ 291 1 436 437
+ 292 1 436 438
+ 293 1 439 440
+ 294 1 439 441
+ 295 1 442 443
+ 296 1 442 444
+ 297 1 445 446
+ 298 1 445 447
+ 299 1 448 449
+ 300 1 448 450
+ 301 1 451 452
+ 302 1 451 453
+ 303 1 454 455
+ 304 1 454 456
+ 305 1 457 458
+ 306 1 457 459
+ 307 1 460 461
+ 308 1 460 462
+ 309 1 463 464
+ 310 1 463 465
+ 311 1 466 467
+ 312 1 466 468
+ 313 1 469 470
+ 314 1 469 471
+ 315 1 472 473
+ 316 1 472 474
+ 317 1 475 476
+ 318 1 475 477
+ 319 1 478 479
+ 320 1 478 480
+ 321 1 481 482
+ 322 1 481 483
+ 323 1 484 485
+ 324 1 484 486
+ 325 1 487 488
+ 326 1 487 489
+ 327 1 490 491
+ 328 1 490 492
+ 329 1 493 494
+ 330 1 493 495
+ 331 1 496 497
+ 332 1 496 498
+ 333 1 499 500
+ 334 1 499 501
+ 335 1 502 503
+ 336 1 502 504
+ 337 1 505 506
+ 338 1 505 507
+ 339 1 508 509
+ 340 1 508 510
+ 341 1 511 512
+ 342 1 511 513
+ 343 1 514 515
+ 344 1 514 516
+ 345 1 517 518
+ 346 1 517 519
+ 347 1 520 521
+ 348 1 520 522
+ 349 1 523 524
+ 350 1 523 525
+ 351 1 526 527
+ 352 1 526 528
+ 353 1 529 530
+ 354 1 529 531
+ 355 1 532 533
+ 356 1 532 534
+ 357 1 535 536
+ 358 1 535 537
+ 359 1 538 539
+ 360 1 538 540
+ 361 1 541 542
+ 362 1 541 543
+ 363 1 544 545
+ 364 1 544 546
+ 365 1 547 548
+ 366 1 547 549
+ 367 1 550 551
+ 368 1 550 552
+ 369 1 553 554
+ 370 1 553 555
+ 371 1 556 557
+ 372 1 556 558
+ 373 1 559 560
+ 374 1 559 561
+ 375 1 562 563
+ 376 1 562 564
+ 377 1 565 566
+ 378 1 565 567
+ 379 1 568 569
+ 380 1 568 570
+ 381 1 571 572
+ 382 1 571 573
+ 383 1 574 575
+ 384 1 574 576
+ 385 1 577 578
+ 386 1 577 579
+ 387 1 580 581
+ 388 1 580 582
+ 389 1 583 584
+ 390 1 583 585
+ 391 1 586 587
+ 392 1 586 588
+ 393 1 589 590
+ 394 1 589 591
+ 395 1 592 593
+ 396 1 592 594
+ 397 1 595 596
+ 398 1 595 597
+ 399 1 598 599
+ 400 1 598 600
+ 401 1 601 602
+ 402 1 601 603
+ 403 1 604 605
+ 404 1 604 606
+ 405 1 607 608
+ 406 1 607 609
+ 407 1 610 611
+ 408 1 610 612
+ 409 1 613 614
+ 410 1 613 615
+ 411 1 616 617
+ 412 1 616 618
+ 413 1 619 620
+ 414 1 619 621
+ 415 1 622 623
+ 416 1 622 624
+ 417 1 625 626
+ 418 1 625 627
+ 419 1 628 629
+ 420 1 628 630
+ 421 1 631 632
+ 422 1 631 633
+ 423 1 634 635
+ 424 1 634 636
+ 425 1 637 638
+ 426 1 637 639
+ 427 1 640 641
+ 428 1 640 642
+ 429 1 643 644
+ 430 1 643 645
+ 431 1 646 647
+ 432 1 646 648
+
+Angles
+
+ 1 1 2 1 3
+ 2 1 5 4 6
+ 3 1 8 7 9
+ 4 1 11 10 12
+ 5 1 14 13 15
+ 6 1 17 16 18
+ 7 1 20 19 21
+ 8 1 23 22 24
+ 9 1 26 25 27
+ 10 1 29 28 30
+ 11 1 32 31 33
+ 12 1 35 34 36
+ 13 1 38 37 39
+ 14 1 41 40 42
+ 15 1 44 43 45
+ 16 1 47 46 48
+ 17 1 50 49 51
+ 18 1 53 52 54
+ 19 1 56 55 57
+ 20 1 59 58 60
+ 21 1 62 61 63
+ 22 1 65 64 66
+ 23 1 68 67 69
+ 24 1 71 70 72
+ 25 1 74 73 75
+ 26 1 77 76 78
+ 27 1 80 79 81
+ 28 1 83 82 84
+ 29 1 86 85 87
+ 30 1 89 88 90
+ 31 1 92 91 93
+ 32 1 95 94 96
+ 33 1 98 97 99
+ 34 1 101 100 102
+ 35 1 104 103 105
+ 36 1 107 106 108
+ 37 1 110 109 111
+ 38 1 113 112 114
+ 39 1 116 115 117
+ 40 1 119 118 120
+ 41 1 122 121 123
+ 42 1 125 124 126
+ 43 1 128 127 129
+ 44 1 131 130 132
+ 45 1 134 133 135
+ 46 1 137 136 138
+ 47 1 140 139 141
+ 48 1 143 142 144
+ 49 1 146 145 147
+ 50 1 149 148 150
+ 51 1 152 151 153
+ 52 1 155 154 156
+ 53 1 158 157 159
+ 54 1 161 160 162
+ 55 1 164 163 165
+ 56 1 167 166 168
+ 57 1 170 169 171
+ 58 1 173 172 174
+ 59 1 176 175 177
+ 60 1 179 178 180
+ 61 1 182 181 183
+ 62 1 185 184 186
+ 63 1 188 187 189
+ 64 1 191 190 192
+ 65 1 194 193 195
+ 66 1 197 196 198
+ 67 1 200 199 201
+ 68 1 203 202 204
+ 69 1 206 205 207
+ 70 1 209 208 210
+ 71 1 212 211 213
+ 72 1 215 214 216
+ 73 1 218 217 219
+ 74 1 221 220 222
+ 75 1 224 223 225
+ 76 1 227 226 228
+ 77 1 230 229 231
+ 78 1 233 232 234
+ 79 1 236 235 237
+ 80 1 239 238 240
+ 81 1 242 241 243
+ 82 1 245 244 246
+ 83 1 248 247 249
+ 84 1 251 250 252
+ 85 1 254 253 255
+ 86 1 257 256 258
+ 87 1 260 259 261
+ 88 1 263 262 264
+ 89 1 266 265 267
+ 90 1 269 268 270
+ 91 1 272 271 273
+ 92 1 275 274 276
+ 93 1 278 277 279
+ 94 1 281 280 282
+ 95 1 284 283 285
+ 96 1 287 286 288
+ 97 1 290 289 291
+ 98 1 293 292 294
+ 99 1 296 295 297
+ 100 1 299 298 300
+ 101 1 302 301 303
+ 102 1 305 304 306
+ 103 1 308 307 309
+ 104 1 311 310 312
+ 105 1 314 313 315
+ 106 1 317 316 318
+ 107 1 320 319 321
+ 108 1 323 322 324
+ 109 1 326 325 327
+ 110 1 329 328 330
+ 111 1 332 331 333
+ 112 1 335 334 336
+ 113 1 338 337 339
+ 114 1 341 340 342
+ 115 1 344 343 345
+ 116 1 347 346 348
+ 117 1 350 349 351
+ 118 1 353 352 354
+ 119 1 356 355 357
+ 120 1 359 358 360
+ 121 1 362 361 363
+ 122 1 365 364 366
+ 123 1 368 367 369
+ 124 1 371 370 372
+ 125 1 374 373 375
+ 126 1 377 376 378
+ 127 1 380 379 381
+ 128 1 383 382 384
+ 129 1 386 385 387
+ 130 1 389 388 390
+ 131 1 392 391 393
+ 132 1 395 394 396
+ 133 1 398 397 399
+ 134 1 401 400 402
+ 135 1 404 403 405
+ 136 1 407 406 408
+ 137 1 410 409 411
+ 138 1 413 412 414
+ 139 1 416 415 417
+ 140 1 419 418 420
+ 141 1 422 421 423
+ 142 1 425 424 426
+ 143 1 428 427 429
+ 144 1 431 430 432
+ 145 1 434 433 435
+ 146 1 437 436 438
+ 147 1 440 439 441
+ 148 1 443 442 444
+ 149 1 446 445 447
+ 150 1 449 448 450
+ 151 1 452 451 453
+ 152 1 455 454 456
+ 153 1 458 457 459
+ 154 1 461 460 462
+ 155 1 464 463 465
+ 156 1 467 466 468
+ 157 1 470 469 471
+ 158 1 473 472 474
+ 159 1 476 475 477
+ 160 1 479 478 480
+ 161 1 482 481 483
+ 162 1 485 484 486
+ 163 1 488 487 489
+ 164 1 491 490 492
+ 165 1 494 493 495
+ 166 1 497 496 498
+ 167 1 500 499 501
+ 168 1 503 502 504
+ 169 1 506 505 507
+ 170 1 509 508 510
+ 171 1 512 511 513
+ 172 1 515 514 516
+ 173 1 518 517 519
+ 174 1 521 520 522
+ 175 1 524 523 525
+ 176 1 527 526 528
+ 177 1 530 529 531
+ 178 1 533 532 534
+ 179 1 536 535 537
+ 180 1 539 538 540
+ 181 1 542 541 543
+ 182 1 545 544 546
+ 183 1 548 547 549
+ 184 1 551 550 552
+ 185 1 554 553 555
+ 186 1 557 556 558
+ 187 1 560 559 561
+ 188 1 563 562 564
+ 189 1 566 565 567
+ 190 1 569 568 570
+ 191 1 572 571 573
+ 192 1 575 574 576
+ 193 1 578 577 579
+ 194 1 581 580 582
+ 195 1 584 583 585
+ 196 1 587 586 588
+ 197 1 590 589 591
+ 198 1 593 592 594
+ 199 1 596 595 597
+ 200 1 599 598 600
+ 201 1 602 601 603
+ 202 1 605 604 606
+ 203 1 608 607 609
+ 204 1 611 610 612
+ 205 1 614 613 615
+ 206 1 617 616 618
+ 207 1 620 619 621
+ 208 1 623 622 624
+ 209 1 626 625 627
+ 210 1 629 628 630
+ 211 1 632 631 633
+ 212 1 635 634 636
+ 213 1 638 637 639
+ 214 1 641 640 642
+ 215 1 644 643 645
+ 216 1 647 646 648
diff --git a/tools/i-pi/examples/lammps/h2o-pimd-rpc/data.water_shortrange b/tools/i-pi/examples/lammps/h2o-pimd-rpc/data.water_shortrange
new file mode 100644
index 0000000000000000000000000000000000000000..13c75e993391340233222a511f10b475c6240737
--- /dev/null
+++ b/tools/i-pi/examples/lammps/h2o-pimd-rpc/data.water_shortrange
@@ -0,0 +1,1331 @@
+LAMMPS Description
+ 
+         648  atoms
+         432  bonds
+         216  angles
+ 
+           2  atom types
+           1  bond types
+           1  angle types
+ 
+         0 35.233 xlo xhi
+         0 35.233 ylo yhi
+         0 35.233 zlo zhi
+ 
+Masses
+ 
+  1 15.9994
+  2  1.0080
+ 
+Bond Coeffs
+ 
+  1    1.78    0.2708585 -0.327738785 0.231328959
+ 
+Angle Coeffs
+ 
+  1    0.0700  107.400000
+
+Atoms
+ 
+ 1 1 1 -1.1128       3.84600000       5.67200001       1.32300000
+ 2 1 2 0.5564        2.97900000       7.05400000       0.85700000
+ 3 1 2 0.5564        5.52500001       5.69700001       0.45100000
+ 4 2 1 -1.1128      34.55700001      34.34100000       3.07800000
+ 5 2 2 0.5564       33.72200001      34.68900000       4.84000001
+ 6 2 2 0.5564       36.02900000      33.22000001       3.71100001
+ 7 3 1 -1.1128       5.59100000       1.96299999      13.47700000
+ 8 3 2 0.5564        7.26500000       1.86400000      13.85100001
+ 9 3 2 0.5564        5.00899999       3.55500000      13.91599999
+ 10 4 1 -1.1128       1.06000000       2.06100000      21.71800001
+ 11 4 2 0.5564        0.75700000       0.26100000      21.82000000
+ 12 4 2 0.5564        0.21300001       3.01299999      23.04700000
+ 13 5 1 -1.1128       1.20000000       1.33700000      29.00599999
+ 14 5 2 0.5564        0.81800000       1.88399999      30.73200000
+ 15 5 2 0.5564        2.88300001       1.82500000      29.01100000
+ 16 6 1 -1.1128       1.33100001       1.38599999      34.30600001
+ 17 6 2 0.5564        2.39200001       2.89799999      34.84600000
+ 18 6 2 0.5564        0.81400000       0.53200001      35.83600000
+ 19 7 1 -1.1128      31.45100000      10.20100000       0.72599999
+ 20 7 2 0.5564       32.28199999      10.87699999      -0.75000000
+ 21 7 2 0.5564       30.91999999      11.59399999       1.67700000
+ 22 8 1 -1.1128       0.83600000      10.80800001       4.29800000
+ 23 8 2 0.5564        0.30500000      10.64300001       2.79300000
+ 24 8 2 0.5564       -0.35600001      10.33400000       5.52400000
+ 25 9 1 -1.1128      34.38100001       5.97900000       9.19400000
+ 26 9 2 0.5564       33.61600000       7.67300000       8.85700000
+ 27 9 2 0.5564       35.11500000       5.25999999       7.61800001
+ 28 10 1 -1.1128      33.21200000       6.48000000      24.27799999
+ 29 10 2 0.5564       31.62400000       6.90800001      23.52100001
+ 30 10 2 0.5564       32.54400000       4.99000000      24.98200000
+ 31 11 1 -1.1128       1.99200000       9.00199999      26.86300000
+ 32 11 2 0.5564        1.85600000      10.17500000      25.57899999
+ 33 11 2 0.5564        0.51900000       8.09899999      26.38599999
+ 34 12 1 -1.1128       2.05400000       8.66000000      32.51499999
+ 35 12 2 0.5564        2.16699999       8.72700000      30.49400000
+ 36 12 2 0.5564        2.37400001      10.51300000      33.03799999
+ 37 13 1 -1.1128       3.40200000      16.63900001       3.00800000
+ 38 13 2 0.5564        4.12700001      15.87200001       4.44600001
+ 39 13 2 0.5564        2.90500001      18.33899999       3.15999999
+ 40 14 1 -1.1128       4.22200000      15.44400000       8.07200000
+ 41 14 2 0.5564        5.21100000      16.75600000       8.29900001
+ 42 14 2 0.5564        2.56000000      15.49200001       8.86000000
+ 43 15 1 -1.1128       2.83100000       9.24599999      16.48800000
+ 44 15 2 0.5564        2.86900001       8.02300001      18.05000000
+ 45 15 2 0.5564        3.96000000       8.46700001      15.15400000
+ 46 16 1 -1.1128       5.56300000       6.00300000      20.90700000
+ 47 16 2 0.5564        4.65300000       4.63800000      21.48000000
+ 48 16 2 0.5564        6.40500000       6.20800000      22.52899999
+ 49 17 1 -1.1128       2.08700001      13.37000000      22.91299999
+ 50 17 2 0.5564        2.83200000      14.80400001      23.42200000
+ 51 17 2 0.5564        1.43400000      13.50900000      21.19599999
+ 52 18 1 -1.1128       3.36900000      17.88600000      25.10900001
+ 53 18 2 0.5564        3.65500000      17.20000000      26.76599999
+ 54 18 2 0.5564        4.77200001      18.97699999      24.49999999
+ 55 19 1 -1.1128      34.76400000      20.80300000       0.94800001
+ 56 19 2 0.5564       35.20999999      21.26700001       2.81599999
+ 57 19 2 0.5564       35.96200001      21.72599999       0.13099999
+ 58 20 1 -1.1128       2.83600000      24.17799999      15.22900000
+ 59 20 2 0.5564        2.79500000      22.34599999      14.87600001
+ 60 20 2 0.5564        2.41399999      24.11500000      17.13000001
+ 61 21 1 -1.1128      33.00000000      24.48100000      15.23000000
+ 62 21 2 0.5564       34.63999999      24.80400001      15.01299999
+ 63 21 2 0.5564       32.40100000      25.76400000      14.29500001
+ 64 22 1 -1.1128       0.40399999      26.77900001      23.39999999
+ 65 22 2 0.5564        1.35300001      27.24800000      24.98700001
+ 66 22 2 0.5564        1.54600001      28.05000000      22.31700001
+ 67 23 1 -1.1128      34.22200000      21.38000000      25.41799999
+ 68 23 2 0.5564       35.66899999      20.15100000      25.31700001
+ 69 23 2 0.5564       32.96000000      21.18000000      23.99200000
+ 70 24 1 -1.1128      33.25900000      17.43800000      32.48000000
+ 71 24 2 0.5564       33.31399999      18.78200000      33.88300001
+ 72 24 2 0.5564       32.74300001      18.18100001      30.87100000
+ 73 25 1 -1.1128       4.46300000      21.97900000       3.93600000
+ 74 25 2 0.5564        5.85600000      23.08400001       3.39999999
+ 75 25 2 0.5564        3.98600000      22.18000000       5.60200000
+ 76 26 1 -1.1128       6.25800000      25.85100001       8.52000000
+ 77 26 2 0.5564        5.76700000      27.69300001       8.47600000
+ 78 26 2 0.5564        7.20200001      25.50600000      10.18600000
+ 79 27 1 -1.1128       0.60099999      29.73699999      12.74700001
+ 80 27 2 0.5564       -0.68500000      30.84200000      12.34999999
+ 81 27 2 0.5564        1.33600000      30.71600000      14.03099999
+ 82 28 1 -1.1128       7.56300000      28.19100001      24.33300000
+ 83 28 2 0.5564        9.20100000      28.82800000      24.68400000
+ 84 28 2 0.5564        7.38100001      27.62100000      22.79900000
+ 85 29 1 -1.1128       3.65300000      27.10900001      27.77200001
+ 86 29 2 0.5564        5.12600000      27.01500000      26.77200001
+ 87 29 2 0.5564        3.03099999      28.75600000      27.69800000
+ 88 30 1 -1.1128       2.59600001      23.99100001      32.47600000
+ 89 30 2 0.5564        2.87900000      24.79099999      30.85899999
+ 90 30 2 0.5564        4.00300000      22.91299999      32.70099999
+ 91 31 1 -1.1128       3.08300000      31.31700001       3.64399999
+ 92 31 2 0.5564        4.13300000      30.58900001       2.53900001
+ 93 31 2 0.5564        4.21800000      32.17300001       5.03700001
+ 94 32 1 -1.1128       4.66100001      30.55500000       9.36799999
+ 95 32 2 0.5564        3.18400001      29.84300000      10.13200000
+ 96 32 2 0.5564        4.35800000      32.44800000       9.12600000
+ 97 33 1 -1.1128       3.46499999      32.53700000      15.77800000
+ 98 33 2 0.5564        5.07200000      31.81899999      15.90300000
+ 99 33 2 0.5564        4.05500001      34.25699999      15.28400000
+ 100 34 1 -1.1128       4.21500000      29.15299999      20.31700001
+ 101 34 2 0.5564        3.65799999      30.17600000      18.84200000
+ 102 34 2 0.5564        4.95899999      30.29100000      21.44900001
+ 103 35 1 -1.1128       1.12600000      31.33300000      28.76800001
+ 104 35 2 0.5564        2.39500000      31.12399999      29.92500000
+ 105 35 2 0.5564        0.76800001      33.09199999      28.89799999
+ 106 36 1 -1.1128       4.88100000      32.61600000      32.30200000
+ 107 36 2 0.5564        6.58800000      32.91100000      31.72500001
+ 108 36 2 0.5564        4.48599999      34.03700001      33.24900001
+ 109 37 1 -1.1128       8.96200001       5.55600000       0.15100000
+ 110 37 2 0.5564        9.65200000       6.99100001       0.85899999
+ 111 37 2 0.5564        9.17300001       4.47700000       1.64500000
+ 112 38 1 -1.1128       1.83300001       3.51799999       5.67900001
+ 113 38 2 0.5564        2.88900000       2.73100000       6.78800000
+ 114 38 2 0.5564        2.78900000       4.18700000       4.14700000
+ 115 39 1 -1.1128      10.51000001      34.72599999      13.07300001
+ 116 39 2 0.5564       11.91999999      34.11800000      11.91900001
+ 117 39 2 0.5564       11.29500001      34.96800000      14.74100000
+ 118 40 1 -1.1128       7.21200000       0.04199999      22.45399999
+ 119 40 2 0.5564        6.92400000       0.47000000      24.17200000
+ 120 40 2 0.5564        8.31900000       1.22799999      21.65300000
+ 121 41 1 -1.1128       6.36500000       2.01000000      27.54400000
+ 122 41 2 0.5564        5.95400000       3.58500000      26.85199999
+ 123 41 2 0.5564        7.75800001       2.54900000      28.69600000
+ 124 42 1 -1.1128      10.83300001       3.14000000      30.78699999
+ 125 42 2 0.5564       12.69700001       2.97500000      30.86700000
+ 126 42 2 0.5564       10.38899999       3.70000001      32.40399999
+ 127 43 1 -1.1128       8.68400000       9.34200001       3.91200001
+ 128 43 2 0.5564        6.98500000       9.25600001       4.77299999
+ 129 43 2 0.5564        8.68400000      10.80899999       3.01100000
+ 130 44 1 -1.1128       4.87299999       9.91900001       7.70700000
+ 131 44 2 0.5564        3.69800000       9.77100000       6.19400000
+ 132 44 2 0.5564        5.04700000      11.96100000       7.62400000
+ 133 45 1 -1.1128      10.03099999       5.01800000       9.69900000
+ 134 45 2 0.5564        9.67500001       3.38199999      10.34000000
+ 135 45 2 0.5564        9.13200000       5.98700001      10.82500000
+ 136 46 1 -1.1128      11.24599999       3.91800000      21.92900000
+ 137 46 2 0.5564       12.61400001       2.77000000      22.34100000
+ 138 46 2 0.5564       12.07300001       5.68600001      21.49699999
+ 139 47 1 -1.1128       6.82500000       7.16400000      25.70799999
+ 140 47 2 0.5564        8.03600000       8.37400001      25.98000001
+ 141 47 2 0.5564        5.20600001       7.90000000      25.89099999
+ 142 48 1 -1.1128      10.17099999      12.81100001       0.29500001
+ 143 48 2 0.5564       10.03300000      12.81800000      -1.60900000
+ 144 48 2 0.5564        9.87999999      14.49200001       0.48000000
+ 145 49 1 -1.1128       8.19000000      17.40200000       1.25299999
+ 146 49 2 0.5564        9.47199999      18.53100000       1.25299999
+ 147 49 2 0.5564        6.35100000      17.81700000       1.56800001
+ 148 50 1 -1.1128      11.23300000      16.18800001       8.29900001
+ 149 50 2 0.5564       10.29100000      17.68900000       8.16600001
+ 150 50 2 0.5564       12.76800001      17.12300001       8.73299999
+ 151 51 1 -1.1128       6.38599999       8.00199999      12.84600000
+ 152 51 2 0.5564        7.70099999       8.89600000      13.65500000
+ 153 51 2 0.5564        5.59100000       8.87699999      11.51900000
+ 154 52 1 -1.1128       8.18400001      10.41900000      18.84799999
+ 155 52 2 0.5564        9.49800000       9.43400000      19.90500001
+ 156 52 2 0.5564        6.88200000       9.02699999      18.94800001
+ 157 53 1 -1.1128      10.80600000      14.43100000      21.32799999
+ 158 53 2 0.5564        9.17700001      13.53100000      20.67000000
+ 159 53 2 0.5564       11.34400000      15.69600000      20.44800000
+ 160 54 1 -1.1128       9.23700000      13.92800000      30.34100000
+ 161 54 2 0.5564       10.77900001      14.83900000      30.52199999
+ 162 54 2 0.5564        9.96500000      13.19199999      28.89900000
+ 163 55 1 -1.1128      10.91800000      21.70700000       1.86400000
+ 164 55 2 0.5564       10.28000000      23.44900001       2.27900000
+ 165 55 2 0.5564       12.70799999      21.45600000       1.74900000
+ 166 56 1 -1.1128       9.35300001      16.12500000      13.92699999
+ 167 56 2 0.5564        9.93799999      17.59399999      14.61800001
+ 168 56 2 0.5564        9.51799999      16.36000001      12.24400000
+ 169 57 1 -1.1128      10.37099999      11.10700000      14.26800000
+ 170 57 2 0.5564        9.64399999      10.40600001      15.85899999
+ 171 57 2 0.5564        9.43400000      12.52300000      14.11699999
+ 172 58 1 -1.1128       3.35100000      22.76899999      20.19599999
+ 173 58 2 0.5564        2.05500001      23.68600001      21.50300001
+ 174 58 2 0.5564        2.45200000      21.40100000      19.41300000
+ 175 59 1 -1.1128       6.83600000      21.32900000      23.19899999
+ 176 59 2 0.5564        8.24900001      20.84799999      22.32000001
+ 177 59 2 0.5564        5.66800001      21.84099999      21.88600000
+ 178 60 1 -1.1128       4.60399999      15.64900000      30.04300000
+ 179 60 2 0.5564        6.45300001      15.21699999      30.20700000
+ 180 60 2 0.5564        3.82200001      14.76199999      31.56200000
+ 181 61 1 -1.1128       7.12500000      19.97600001       9.42100001
+ 182 61 2 0.5564        5.91800000      20.45300001      10.72999999
+ 183 61 2 0.5564        8.09899999      21.49600001       9.49100000
+ 184 62 1 -1.1128       9.06299999      25.91200001      13.18600000
+ 185 62 2 0.5564       10.34999999      26.57199999      12.36700001
+ 186 62 2 0.5564        9.67999999      24.36700001      13.69700001
+ 187 63 1 -1.1128       8.02200000      22.34299999      17.04199999
+ 188 63 2 0.5564        9.14400000      23.36700001      18.07399999
+ 189 63 2 0.5564        6.56200000      23.46200000      16.85199999
+ 190 64 1 -1.1128      10.76199999      26.28499999      19.96299999
+ 191 64 2 0.5564       11.03600000      27.96599999      20.53800000
+ 192 64 2 0.5564       11.07800000      25.40100000      21.45600000
+ 193 65 1 -1.1128       9.15800000      22.90199999      28.39100000
+ 194 65 2 0.5564        8.21900000      23.52800001      27.08499999
+ 195 65 2 0.5564        8.08900000      21.76000000      29.50900000
+ 196 66 1 -1.1128       6.21900000      20.15800000      31.92100000
+ 197 66 2 0.5564        5.63500000      18.51099999      31.16100000
+ 198 66 2 0.5564        7.53000000      19.62400000      33.07100000
+ 199 67 1 -1.1128      11.19100001      31.50900000       2.61700000
+ 200 67 2 0.5564       10.46000001      32.21399999       4.10800000
+ 201 67 2 0.5564       13.17600000      31.75099999       2.57700000
+ 202 68 1 -1.1128       4.74799999       0.05500001       8.60500000
+ 203 68 2 0.5564        5.38000000       0.51700000      10.18300000
+ 204 68 2 0.5564        6.05000000      -0.30600001       7.48000000
+ 205 69 1 -1.1128       8.69500000      30.80899999      15.73100000
+ 206 69 2 0.5564        9.18899999      32.10300000      14.49500000
+ 207 69 2 0.5564        8.44699999      29.06900000      14.86800000
+ 208 70 1 -1.1128      10.12799999      31.40200000      20.76599999
+ 209 70 2 0.5564        9.45600000      30.90500001      19.15500000
+ 210 70 2 0.5564        9.01999999      32.73100000      21.41500000
+ 211 71 1 -1.1128      12.23800001      30.16200000      25.83699999
+ 212 71 2 0.5564       11.41799999      30.90800001      27.10999999
+ 213 71 2 0.5564       12.39600001      31.33100001      24.67800000
+ 214 72 1 -1.1128      10.39500000      32.53700000      30.62400000
+ 215 72 2 0.5564       11.04199999      34.33899999      30.75099999
+ 216 72 2 0.5564       11.37800001      31.48599999      31.53800000
+ 217 73 1 -1.1128      10.43800000       3.62599999       5.08700001
+ 218 73 2 0.5564       12.43500001       4.08200000       5.13600000
+ 219 73 2 0.5564        9.82200001       4.28400000       6.68100000
+ 220 74 1 -1.1128      14.76199999       3.40100000      13.77599999
+ 221 74 2 0.5564       16.51799999       3.82400000      13.37600000
+ 222 74 2 0.5564       13.75200000       4.75700000      12.96400000
+ 223 75 1 -1.1128      12.38199999       1.01200001      17.64300001
+ 224 75 2 0.5564       13.34599999       1.99700000      16.44400000
+ 225 75 2 0.5564       11.93100000       2.13300000      18.99800001
+ 226 76 1 -1.1128      15.27799999       1.29300000      24.55900000
+ 227 76 2 0.5564       16.07100000       0.94600000      26.36500000
+ 228 76 2 0.5564       15.79399999       0.19899999      23.49900000
+ 229 77 1 -1.1128      22.22600000      31.62700000      24.71199999
+ 230 77 2 0.5564       23.33800001      32.59500000      23.87600001
+ 231 77 2 0.5564       22.16100000      30.05300000      24.13200000
+ 232 78 1 -1.1128      15.63999999       1.84700001      32.71700000
+ 233 78 2 0.5564       17.48800000       2.47300000      31.87400000
+ 234 78 2 0.5564       16.40300001       0.86900001      34.26700001
+ 235 79 1 -1.1128      14.85800001      10.19899999       2.75400001
+ 236 79 2 0.5564       13.36000001      10.71199999       2.28199999
+ 237 79 2 0.5564       14.56000000       9.31600000       4.55900000
+ 238 80 1 -1.1128      15.71700000       8.46900000      10.73900000
+ 239 80 2 0.5564       17.32300000       9.58100000      10.87500000
+ 240 80 2 0.5564       14.57400000       9.63100000      10.22099999
+ 241 81 1 -1.1128      15.24800000      10.39800000      16.52500001
+ 242 81 2 0.5564       16.32400001       9.18100001      16.14899999
+ 243 81 2 0.5564       14.17200000      10.48800000      15.09800001
+ 244 82 1 -1.1128      13.22600000       8.43800000      20.80100001
+ 245 82 2 0.5564       14.04300000       8.99600000      19.29500001
+ 246 82 2 0.5564       14.66100001       7.80200000      22.09300000
+ 247 83 1 -1.1128      10.17300001      10.96100000      25.87500000
+ 248 83 2 0.5564       11.47700000      10.22300000      26.94000000
+ 249 83 2 0.5564       11.26900000      10.73800000      24.34299999
+ 250 84 1 -1.1128      12.79200000       7.73699999      29.17300001
+ 251 84 2 0.5564       12.19899999       6.03799999      29.47499999
+ 252 84 2 0.5564       14.42700000       7.44999999      29.61700000
+ 253 85 1 -1.1128      15.18000000      19.49800000       3.57800000
+ 254 85 2 0.5564       14.88300001      17.59600001       4.08000001
+ 255 85 2 0.5564       16.75400001      19.57899999       2.62599999
+ 256 86 1 -1.1128      12.51700000      11.09300000       7.70099999
+ 257 86 2 0.5564       12.22400001      12.77800000       7.55500000
+ 258 86 2 0.5564       11.15000000      10.39299999       7.05700000
+ 259 87 1 -1.1128      16.26600000      16.27099999      10.75800001
+ 260 87 2 0.5564       16.50700001      15.79500000      12.76800001
+ 261 87 2 0.5564       17.72500001      16.97699999      10.29200001
+ 262 88 1 -1.1128      14.06900000      18.39900001      18.89700000
+ 263 88 2 0.5564       15.51300000      17.52300000      18.15500000
+ 264 88 2 0.5564       14.95800001      18.70900000      20.67300000
+ 265 89 1 -1.1128      14.09899999      15.48000000      25.51000001
+ 266 89 2 0.5564       13.69800000      16.87200001      26.93799999
+ 267 89 2 0.5564       12.56700000      15.37900000      24.44400000
+ 268 90 1 -1.1128      13.30900000      17.57400000      30.29200001
+ 269 90 2 0.5564       14.93700001      16.93399999      30.81000000
+ 270 90 2 0.5564       13.96900001      19.49400000      30.01200001
+ 271 91 1 -1.1128      18.37099999      23.25699999       0.92500000
+ 272 91 2 0.5564       19.47899999      23.48000000       2.32099999
+ 273 91 2 0.5564       19.08700001      24.32499999      -0.36900000
+ 274 92 1 -1.1128      12.10000000      21.72999999      11.35500000
+ 275 92 2 0.5564       13.14100001      22.28700000      12.74300001
+ 276 92 2 0.5564       13.46700001      22.23600000      10.24400000
+ 277 93 1 -1.1128      12.16300001      23.29000000      23.59699999
+ 278 93 2 0.5564       11.32400001      22.73600001      24.94900000
+ 279 93 2 0.5564       13.88200000      22.87200001      23.84000001
+ 280 94 1 -1.1128      20.17300001      26.76100001      22.62800000
+ 281 94 2 0.5564       20.20600001      26.53200001      20.79200000
+ 282 94 2 0.5564       21.55600000      25.74200000      23.38899999
+ 283 95 1 -1.1128      16.70099999      21.16500000      22.60500000
+ 284 95 2 0.5564       18.02800000      20.68600001      23.84799999
+ 285 95 2 0.5564       17.10400000      22.86599999      21.94900000
+ 286 96 1 -1.1128      11.39100000      26.46099999      33.70499999
+ 287 96 2 0.5564        9.84099999      27.19199999      34.04800001
+ 288 96 2 0.5564       11.77599999      25.53999999      35.24300000
+ 289 97 1 -1.1128       9.89799999      25.98900000       4.55300001
+ 290 97 2 0.5564        8.90199999      26.13099999       6.03900000
+ 291 97 2 0.5564       10.28700000      27.80600000       4.37600000
+ 292 98 1 -1.1128      14.30800000      26.96000000      10.87699999
+ 293 98 2 0.5564       15.30200000      27.40500000      12.17300001
+ 294 98 2 0.5564       15.46300000      26.15100000       9.63299999
+ 295 99 1 -1.1128      13.43300000      22.96000000      16.90400000
+ 296 99 2 0.5564       13.40900000      24.13099999      18.13200000
+ 297 99 2 0.5564       13.62400000      21.19100001      17.52000000
+ 298 100 1 -1.1128      16.40900000      26.76800001      26.87500000
+ 299 100 2 0.5564       17.58999999      26.98700001      25.43100000
+ 300 100 2 0.5564       14.75099999      27.70300000      26.23000000
+ 301 101 1 -1.1128      14.40500000      22.73299999      29.89200000
+ 302 101 2 0.5564       15.42300000      23.07900000      28.49400000
+ 303 101 2 0.5564       12.82600001      23.25900000      29.41600000
+ 304 102 1 -1.1128       6.90500001      29.40800000       0.74900000
+ 305 102 2 0.5564        8.42800001      30.48300000       1.56700000
+ 306 102 2 0.5564        6.35300001      30.81400000      -0.44400000
+ 307 103 1 -1.1128       9.18899999      34.15900001       6.50900000
+ 308 103 2 0.5564       10.19800000      34.19300000       8.00199999
+ 309 103 2 0.5564        9.89000001      35.69200000       5.78500000
+ 310 104 1 -1.1128      14.25600001      32.31600000       9.36900000
+ 311 104 2 0.5564       15.73299999      32.86700000       9.48599999
+ 312 104 2 0.5564       14.75400001      30.67000000      10.09000000
+ 313 105 1 -1.1128      14.71400000      30.84099999      16.51600000
+ 314 105 2 0.5564       13.74799999      29.55099999      17.27900000
+ 315 105 2 0.5564       13.21800000      31.93300001      16.61400001
+ 316 106 1 -1.1128      18.40900000      33.64100000      20.61100001
+ 317 106 2 0.5564       19.60099999      32.27400001      21.11500000
+ 318 106 2 0.5564       17.36000001      32.65500000      19.51799999
+ 319 107 1 -1.1128      16.06200001      28.63800000      32.20700000
+ 320 107 2 0.5564       14.64800000      27.95800001      33.25299999
+ 321 107 2 0.5564       15.75200000      28.01400000      30.52199999
+ 322 108 1 -1.1128      16.20000000      30.89499999       1.47300000
+ 323 108 2 0.5564       16.62599999      29.96800000      -0.13000001
+ 324 108 2 0.5564       17.16699999      29.83300001       2.92699999
+ 325 109 1 -1.1128      20.27799999       3.52899999       6.04800001
+ 326 109 2 0.5564       20.97699999       3.61100001       4.57500001
+ 327 109 2 0.5564       21.31200000       4.51300000       7.25100000
+ 328 110 1 -1.1128      23.07900000       5.77800000      10.40800000
+ 329 110 2 0.5564       24.65000001       6.25900000      10.83800000
+ 330 110 2 0.5564       22.34200001       7.60900000      10.17799999
+ 331 111 1 -1.1128      19.58100000       2.03099999      12.10999999
+ 332 111 2 0.5564       19.03900000       1.08200000      10.44000000
+ 333 111 2 0.5564       21.14100001       2.99100001      11.85100001
+ 334 112 1 -1.1128      22.00500001       3.22300000      23.17799999
+ 335 112 2 0.5564       21.42899999       4.09000000      24.55399999
+ 336 112 2 0.5564       20.65400001       1.79099999      22.71100001
+ 337 113 1 -1.1128      16.63000000       6.42200000      23.79200000
+ 338 113 2 0.5564       16.21900000       4.80400001      24.40600001
+ 339 113 2 0.5564       17.06600001       7.12799999      25.28199999
+ 340 114 1 -1.1128      21.67599999       5.56400001      28.15800000
+ 341 114 2 0.5564       20.65799999       6.71700000      29.18499999
+ 342 114 2 0.5564       23.41300000       5.82800000      28.99600000
+ 343 115 1 -1.1128      15.25699999       5.26500000       5.62599999
+ 344 115 2 0.5564       16.91400000       4.51900000       5.48999999
+ 345 115 2 0.5564       15.14400000       6.15000000       6.97200000
+ 346 116 1 -1.1128      20.13700000      11.08200000      10.43700000
+ 347 116 2 0.5564       20.02100000      10.94700000       8.73299999
+ 348 116 2 0.5564       21.02500000      12.55500000      10.85300000
+ 349 117 1 -1.1128      23.08900000      14.62700000      12.43700000
+ 350 117 2 0.5564       24.71600000      15.25400000      12.73600001
+ 351 117 2 0.5564       23.28400000      13.22799999      13.65300000
+ 352 118 1 -1.1128      24.08300000      12.64900000      22.56600000
+ 353 118 2 0.5564       22.39700000      12.66300000      23.04199999
+ 354 118 2 0.5564       24.90100001      13.85100001      23.56499999
+ 355 119 1 -1.1128      17.86500001       7.90899999      30.03600000
+ 356 119 2 0.5564       17.50900000       8.04499999      31.98200000
+ 357 119 2 0.5564       18.07800000       9.58200001      29.31799999
+ 358 120 1 -1.1128      18.82400000       8.48599999       0.10400000
+ 359 120 2 0.5564       19.99700000      10.19100001      -0.05700000
+ 360 120 2 0.5564       17.07700001       8.99800001       0.77900001
+ 361 121 1 -1.1128      20.12200000       9.14300000       5.34299999
+ 362 121 2 0.5564       19.37300000       8.81899999       3.82100000
+ 363 121 2 0.5564       21.99800001       8.77599999       5.12799999
+ 364 122 1 -1.1128      16.41300000      14.45900000       5.85499999
+ 365 122 2 0.5564       15.53599999      13.00700000       5.23899999
+ 366 122 2 0.5564       16.00599999      14.72500001       7.73699999
+ 367 123 1 -1.1128      17.56099999      15.06600001      15.65400001
+ 368 123 2 0.5564       17.57500001      13.39800000      16.05500001
+ 369 123 2 0.5564       18.97800000      15.82800000      16.39999999
+ 370 124 1 -1.1128      26.37400001      17.04700000      24.81700000
+ 371 124 2 0.5564       27.98300000      17.09800001      25.63200001
+ 372 124 2 0.5564       25.62900001      18.75099999      24.91900001
+ 373 125 1 -1.1128      19.78400000      12.96000000      28.70600000
+ 374 125 2 0.5564       21.66199999      13.05500001      28.87100000
+ 375 125 2 0.5564       19.54500000      14.06999999      27.14300000
+ 376 126 1 -1.1128      17.89099999      16.73299999      32.49900000
+ 377 126 2 0.5564       18.32700000      15.24000000      31.27700001
+ 378 126 2 0.5564       18.63299999      18.33500001      31.69300001
+ 379 127 1 -1.1128      23.73299999      23.02399999       1.66300000
+ 380 127 2 0.5564       24.80000000      24.05199999       2.77599999
+ 381 127 2 0.5564       24.69300001      22.61800001       0.19800000
+ 382 128 1 -1.1128      20.78900000      18.44000000       9.44299999
+ 383 128 2 0.5564       20.76599999      17.25699999       7.88100000
+ 384 128 2 0.5564       21.89600000      17.34500000      10.38500001
+ 385 129 1 -1.1128      21.57400000      17.49299999      17.83800000
+ 386 129 2 0.5564       20.59699999      18.95500001      17.21800000
+ 387 129 2 0.5564       22.53800000      16.87400000      16.25100000
+ 388 130 1 -1.1128      19.16800000      14.74799999      24.13099999
+ 389 130 2 0.5564       19.71100001      16.39000000      23.71199999
+ 390 130 2 0.5564       17.42899999      14.69500000      24.40300001
+ 391 131 1 -1.1128      22.14899999      20.19800000      24.97699999
+ 392 131 2 0.5564       21.63900001      20.92400000      26.48599999
+ 393 131 2 0.5564       22.65600000      21.65700001      24.41099999
+ 394 132 1 -1.1128      20.56499999      20.79200000      29.60000001
+ 395 132 2 0.5564       22.26399999      20.40900000      30.21399999
+ 396 132 2 0.5564       20.54800000      22.40800000      30.59699999
+ 397 133 1 -1.1128      20.80200000      26.54699999       9.61499999
+ 398 133 2 0.5564       20.09899999      27.98399999       8.33800001
+ 399 133 2 0.5564       21.27700001      27.53900001      11.32499999
+ 400 134 1 -1.1128      16.28300000      23.58900001       7.77900001
+ 401 134 2 0.5564       16.09300000      21.97300001       6.71199999
+ 402 134 2 0.5564       17.90100001      22.97100000       8.15400000
+ 403 135 1 -1.1128      18.46900000      29.79799999      13.56800001
+ 404 135 2 0.5564       19.71199999      31.21600000      13.50600000
+ 405 135 2 0.5564       16.87200001      30.34299999      14.39600001
+ 406 136 1 -1.1128      18.79000001      21.71199999      16.06000000
+ 407 136 2 0.5564       19.87800000      23.09000000      16.48500001
+ 408 136 2 0.5564       17.20100000      22.32600000      15.81899999
+ 409 137 1 -1.1128      21.74700001      26.08400001      16.34900001
+ 410 137 2 0.5564       20.78300001      27.02100000      15.29999999
+ 411 137 2 0.5564       22.70499999      27.32799999      17.20600001
+ 412 138 1 -1.1128      20.76899999      26.21100000      32.05000000
+ 413 138 2 0.5564       21.48800000      27.40399999      33.32799999
+ 414 138 2 0.5564       18.98900000      26.71000000      32.14500001
+ 415 139 1 -1.1128      19.82000000      29.18100001       5.55900000
+ 416 139 2 0.5564       20.99100001      29.50900000       4.10900001
+ 417 139 2 0.5564       19.43100000      31.01800000       6.22099999
+ 418 140 1 -1.1128      19.24000000      33.86700000       7.99300000
+ 419 140 2 0.5564       19.10700000      35.03900000       6.60399999
+ 420 140 2 0.5564       20.69700001      33.67100000       9.06299999
+ 421 141 1 -1.1128      22.51099999      34.97600001      15.79300000
+ 422 141 2 0.5564       23.71600000      36.16300001      16.60300000
+ 423 141 2 0.5564       21.69900000      36.15000000      14.46700001
+ 424 142 1 -1.1128      22.62199999      30.28400000      19.06900000
+ 425 142 2 0.5564       22.04899999      31.35100000      17.72500001
+ 426 142 2 0.5564       24.41099999      30.77299999      19.57599999
+ 427 143 1 -1.1128      18.63900001      33.61100001      28.36900000
+ 428 143 2 0.5564       18.22600000      32.15900001      29.10300000
+ 429 143 2 0.5564       19.90600000      33.00800000      27.15800000
+ 430 144 1 -1.1128      22.52000000       1.32499999      31.92600001
+ 431 144 2 0.5564       22.80300000       2.66800001      30.79600000
+ 432 144 2 0.5564       21.04499999       0.42499999      31.12200000
+ 433 145 1 -1.1128      21.75400001       3.78900000       1.15900001
+ 434 145 2 0.5564       22.08499999       2.78500000      -0.18000000
+ 435 145 2 0.5564       20.85000000       5.17500000       0.61000000
+ 436 146 1 -1.1128      28.45699999       5.53900001      12.13300000
+ 437 146 2 0.5564       29.48900001       4.39000000      11.18200000
+ 438 146 2 0.5564       29.16100000       7.13099999      12.58700000
+ 439 147 1 -1.1128      22.49500000       5.96599999      17.32400001
+ 440 147 2 0.5564       24.37700000       5.37900000      17.39299999
+ 441 147 2 0.5564       21.90600000       5.49100000      18.85700000
+ 442 148 1 -1.1128      28.12799999       3.30400000      22.28700000
+ 443 148 2 0.5564       28.12300001       2.99899999      20.49100000
+ 444 148 2 0.5564       26.53299999       3.35500000      22.87600001
+ 445 149 1 -1.1128      28.37800001      10.45500000      27.26600000
+ 446 149 2 0.5564       30.01900001      10.29200001      28.05100000
+ 447 149 2 0.5564       28.63500000      10.03900000      25.46300000
+ 448 150 1 -1.1128      27.03099999       8.35300001      34.80600000
+ 449 150 2 0.5564       26.11600001       9.98399999      34.57100001
+ 450 150 2 0.5564       28.68500000       8.95100001      34.73900000
+ 451 151 1 -1.1128      24.95100001       8.15999999       4.45399999
+ 452 151 2 0.5564       25.93000001       9.61600000       5.15999999
+ 453 151 2 0.5564       25.94700000       7.99400001       2.72400000
+ 454 152 1 -1.1128      26.93700001      12.43599999       6.86900001
+ 455 152 2 0.5564       25.49200001      13.28400000       6.70799999
+ 456 152 2 0.5564       27.68900000      13.33199999       8.26600000
+ 457 153 1 -1.1128      23.36500000      11.21399999      16.93300001
+ 458 153 2 0.5564       22.24700000       9.74399999      16.78900000
+ 459 153 2 0.5564       23.26399999      12.03500000      18.53900001
+ 460 154 1 -1.1128      28.32099999       8.75900000      22.15800000
+ 461 154 2 0.5564       27.66199999       6.89499999      22.48200001
+ 462 154 2 0.5564       26.97100000       9.71000000      21.90199999
+ 463 155 1 -1.1128      27.07100000       6.10900001      29.55500000
+ 464 155 2 0.5564       27.59100000       7.66300000      28.85700000
+ 465 155 2 0.5564       27.30400000       6.32000001      31.26100000
+ 466 156 1 -1.1128      22.47400000      11.70400001      34.63999999
+ 467 156 2 0.5564       22.75200000      13.30400000      35.58400000
+ 468 156 2 0.5564       22.84000001      12.09000000      33.03000001
+ 469 157 1 -1.1128      21.65600000      14.97100000       5.61499999
+ 470 157 2 0.5564       21.68999999      15.86000000       3.97699999
+ 471 157 2 0.5564       19.96400000      14.22500000       5.77400000
+ 472 158 1 -1.1128      28.53900001      21.49200001       9.82000000
+ 473 158 2 0.5564       27.28800001      22.18100001       8.68800000
+ 474 158 2 0.5564       28.06500000      22.42000000      11.60200000
+ 475 159 1 -1.1128      28.36399999      16.01999999      11.10900001
+ 476 159 2 0.5564       30.03300000      16.64900000      12.08900000
+ 477 159 2 0.5564       28.45600000      17.44000000      10.08200000
+ 478 160 1 -1.1128       0.05400000      13.68600001      18.10300000
+ 479 160 2 0.5564       -1.71400000      12.92800000      18.84099999
+ 480 160 2 0.5564        1.00800000      12.42899999      17.38300000
+ 481 161 1 -1.1128      24.63600001      12.89400001      29.95700000
+ 482 161 2 0.5564       25.90600000      13.91400000      31.18300000
+ 483 161 2 0.5564       25.64100000      11.60900000      29.16200000
+ 484 162 1 -1.1128      21.54800000      17.25000000       0.74900000
+ 485 162 2 0.5564       21.84300000      19.02600000       0.90500001
+ 486 162 2 0.5564       20.38500001      16.71600000      -0.69700001
+ 487 163 1 -1.1128      26.09499999      27.27400001       4.52000000
+ 488 163 2 0.5564       27.88900000      26.45800000       4.50500000
+ 489 163 2 0.5564       25.64800000      26.96999999       6.16500000
+ 490 164 1 -1.1128      23.61000000      22.51499999       8.00800000
+ 491 164 2 0.5564       22.65300000      21.18700000       8.73900000
+ 492 164 2 0.5564       22.28600000      24.09499999       8.44400000
+ 493 165 1 -1.1128      27.35500000      18.92900000      18.18000000
+ 494 165 2 0.5564       27.20000000      20.34900001      17.15500000
+ 495 165 2 0.5564       25.57899999      18.32200000      18.77000000
+ 496 166 1 -1.1128      26.76500001      23.63299999      14.44400000
+ 497 166 2 0.5564       27.44100000      25.29800000      13.65099999
+ 498 166 2 0.5564       25.08600000      24.25600001      14.74900000
+ 499 167 1 -1.1128      31.47800001      20.76899999      20.98600000
+ 500 167 2 0.5564       30.44000000      22.50900000      21.13499999
+ 501 167 2 0.5564       30.56700000      19.65600000      20.04300000
+ 502 168 1 -1.1128      24.81199999      20.41200000      32.66800001
+ 503 168 2 0.5564       26.24199999      21.47800001      31.87400000
+ 504 168 2 0.5564       25.78699999      19.02300001      33.15800000
+ 505 169 1 -1.1128      22.10500001      29.07600000       0.92800000
+ 506 169 2 0.5564       23.29599999      27.92299999       1.73900000
+ 507 169 2 0.5564       22.62300000      30.99400001       0.88200000
+ 508 170 1 -1.1128      29.57199999      31.25600001       8.62599999
+ 509 170 2 0.5564       30.79500000      30.20299999       7.73600001
+ 510 170 2 0.5564       28.27700001      31.51900000       7.25999999
+ 511 171 1 -1.1128      31.81700000      34.84300000      18.28300000
+ 512 171 2 0.5564       32.43800000      34.38899999      16.47400000
+ 513 171 2 0.5564       32.74300001      36.42200000      18.34100000
+ 514 172 1 -1.1128      27.91500001      25.60099999      19.03300000
+ 515 172 2 0.5564       29.35800000      26.56099999      19.19000000
+ 516 172 2 0.5564       28.14800001      24.42899999      17.53000000
+ 517 173 1 -1.1128      24.54800000      24.65400001      24.02500000
+ 518 173 2 0.5564       25.52800001      25.63500000      22.82400000
+ 519 173 2 0.5564       25.29999999      25.20000000      25.64500000
+ 520 174 1 -1.1128      28.53999999      22.92200000      30.37000000
+ 521 174 2 0.5564       27.41399999      24.09600000      29.78100000
+ 522 174 2 0.5564       29.67400000      23.91400000      31.87299999
+ 523 175 1 -1.1128      24.96900001      33.62300000       1.01400000
+ 524 175 2 0.5564       26.52100001      33.05800000       1.51799999
+ 525 175 2 0.5564       24.99000000      34.32200000      -0.68299999
+ 526 176 1 -1.1128      23.07500000      32.17099999      11.32400001
+ 527 176 2 0.5564       23.31600000      32.77500000      13.09700000
+ 528 176 2 0.5564       24.46000001      33.20299999      10.66199999
+ 529 177 1 -1.1128      27.49699999       2.73600001      17.22400001
+ 530 177 2 0.5564       28.39700000       3.41500000      15.71500001
+ 531 177 2 0.5564       28.23400001       1.23300000      17.41200000
+ 532 178 1 -1.1128      26.36900000      33.06000000      22.07700001
+ 533 178 2 0.5564       26.17000001      34.74600000      22.26399999
+ 534 178 2 0.5564       27.59200000      32.40399999      23.32099999
+ 535 179 1 -1.1128      30.22099999      30.95000000      25.84300000
+ 536 179 2 0.5564       30.30500000      29.03799999      26.20800000
+ 537 179 2 0.5564       30.36300001      31.97900000      27.41399999
+ 538 180 1 -1.1128      24.97300001      26.73200000      28.60700001
+ 539 180 2 0.5564       25.38500001      28.36900000      29.24800000
+ 540 180 2 0.5564       23.33000000      26.59699999      29.23400001
+ 541 181 1 -1.1128      32.16500000       4.85700000       2.25800000
+ 542 181 2 0.5564       32.41700001       6.19500001       1.15700000
+ 543 181 2 0.5564       32.61499999       3.72700000       1.11200000
+ 544 182 1 -1.1128      28.06699999       3.53299999       5.21699999
+ 545 182 2 0.5564       26.96000000       4.44699999       4.15800000
+ 546 182 2 0.5564       29.87500000       3.86300000       4.44800000
+ 547 183 1 -1.1128      33.27900000       2.78200000      13.02800000
+ 548 183 2 0.5564       33.70799999       3.95500001      11.81700000
+ 549 183 2 0.5564       33.65600000       3.54500000      14.63100000
+ 550 184 1 -1.1128      34.27799999       4.94400001      17.49200001
+ 551 184 2 0.5564       33.43800000       6.56300000      17.87600001
+ 552 184 2 0.5564       34.90600000       4.45200000      18.99499999
+ 553 185 1 -1.1128      32.36300001       1.90800001      26.09199999
+ 554 185 2 0.5564       31.94099999       1.68299999      24.26800000
+ 555 185 2 0.5564       33.85000000       1.39000000      26.90400000
+ 556 186 1 -1.1128      27.98200000       0.41799999      28.24100000
+ 557 186 2 0.5564       27.51600000       2.08000001      28.30900000
+ 558 186 2 0.5564       29.59300001       0.17600000      27.29900001
+ 559 187 1 -1.1128      28.84500000      14.67200001       2.72400000
+ 560 187 2 0.5564       27.96299999      13.93000001       4.13900000
+ 561 187 2 0.5564       30.38599999      15.71400000       3.37900000
+ 562 188 1 -1.1128      28.08300000      10.61800001      14.29800000
+ 563 188 2 0.5564       28.62300000      12.15999999      13.29300000
+ 564 188 2 0.5564       26.48599999      11.01500000      15.37900000
+ 565 189 1 -1.1128      33.86700000      10.54500000      13.30600001
+ 566 189 2 0.5564       35.16500000       9.61200000      13.81000000
+ 567 189 2 0.5564       33.61499999      10.27000001      11.51300000
+ 568 190 1 -1.1128      31.79000001       9.69600000      18.22300000
+ 569 190 2 0.5564       30.48400000       9.33400000      19.42100001
+ 570 190 2 0.5564       30.83399999      10.09600000      16.92900000
+ 571 191 1 -1.1128      30.14100001      15.00599999      21.53200001
+ 572 191 2 0.5564       28.56499999      15.59399999      22.09899999
+ 573 191 2 0.5564       30.94200000      14.25299999      23.07700001
+ 574 192 1 -1.1128      32.79799999      10.73200000      30.67999999
+ 575 192 2 0.5564       34.07300001       9.52800001      30.79900000
+ 576 192 2 0.5564       32.99100001      11.51200000      28.98300000
+ 577 193 1 -1.1128      33.65200000      16.26500000       5.08600000
+ 578 193 2 0.5564       35.39900001      16.23899999       4.72999999
+ 579 193 2 0.5564       33.50300001      17.93900000       5.63100000
+ 580 194 1 -1.1128      31.94700000      10.79900000       7.94300000
+ 581 194 2 0.5564       29.89400001      10.54900000       7.61899999
+ 582 194 2 0.5564       32.27099999      12.41399999       7.07500000
+ 583 195 1 -1.1128       0.32900000      15.51600000      11.74600000
+ 584 195 2 0.5564       -0.44600001      14.24900001      12.93900000
+ 585 195 2 0.5564       -0.68500000      17.01800000      11.93500000
+ 586 196 1 -1.1128       4.26200000      19.16500000      14.30800000
+ 587 196 2 0.5564        3.57899999      17.69100000      14.91999999
+ 588 196 2 0.5564        5.72299999      19.18300000      15.20400000
+ 589 197 1 -1.1128      32.99499999      13.54600001      25.94800001
+ 590 197 2 0.5564       32.16699999      15.06000000      26.78699999
+ 591 197 2 0.5564       34.42499999      13.80000000      25.00700000
+ 592 198 1 -1.1128       1.77299999      13.52400000      34.03700001
+ 593 198 2 0.5564        0.22700001      14.40900000      33.44600001
+ 594 198 2 0.5564        2.16699999      14.67000000      35.51099999
+ 595 199 1 -1.1128      33.02900000      20.52899999       7.24700000
+ 596 199 2 0.5564       34.38800000      21.41399999       8.00300000
+ 597 199 2 0.5564       31.45100000      20.83100000       8.18200000
+ 598 200 1 -1.1128       2.03700001      24.25000000      10.25100000
+ 599 200 2 0.5564        3.74300001      25.00800000       9.87600001
+ 600 200 2 0.5564        1.89400001      25.04300000      11.90300000
+ 601 201 1 -1.1128      32.75300000      19.25900000      13.97600001
+ 602 201 2 0.5564       32.79200000      20.88600000      13.79200000
+ 603 201 2 0.5564       34.33400000      18.79900000      14.97600001
+ 604 202 1 -1.1128       0.39600001      18.67300000      18.69900000
+ 605 202 2 0.5564       -1.21100000      18.95000000      19.12700001
+ 606 202 2 0.5564        0.46900000      16.97699999      18.43599999
+ 607 203 1 -1.1128      30.85499999      18.37000000      27.95899999
+ 608 203 2 0.5564       29.75900000      19.68100000      28.68999999
+ 609 203 2 0.5564       32.10300000      19.47700000      26.76300000
+ 610 204 1 -1.1128      27.72299999      15.99200000      33.09100001
+ 611 204 2 0.5564       29.39000000      16.42300000      32.19199999
+ 612 204 2 0.5564       27.80100001      15.85899999      34.80400001
+ 613 205 1 -1.1128      31.06800000      27.89499999       3.34800000
+ 614 205 2 0.5564       32.51700000      27.82500000       4.61000000
+ 615 205 2 0.5564       31.52899999      29.45900000       2.32400001
+ 616 206 1 -1.1128      35.03900000      28.00800000       6.66300000
+ 617 206 2 0.5564       35.96599999      26.93399999       7.68299999
+ 618 206 2 0.5564       36.05500001      28.33600000       5.33600000
+ 619 207 1 -1.1128      29.35600001      28.19599999      13.02500000
+ 620 207 2 0.5564       29.20999999      29.33500001      14.58900001
+ 621 207 2 0.5564       28.87400000      29.62900001      11.86700000
+ 622 208 1 -1.1128      32.38599999      28.43400000      18.96100000
+ 623 208 2 0.5564       33.36799999      28.57400000      20.41099999
+ 624 208 2 0.5564       33.41000001      27.40600001      17.94900000
+ 625 209 1 -1.1128      30.89799999      25.39000000      25.79900000
+ 626 209 2 0.5564       32.36900000      25.91299999      24.58000000
+ 627 209 2 0.5564       31.31700001      24.07500000      27.02900000
+ 628 210 1 -1.1128      32.25900000      25.61100001      33.10400000
+ 629 210 2 0.5564       32.23800001      25.73600001      34.80600000
+ 630 210 2 0.5564       33.91999999      25.04199999      32.77500000
+ 631 211 1 -1.1128      30.29000000      32.64500000       1.34100000
+ 632 211 2 0.5564       29.94900000      32.79300000      -0.43000000
+ 633 211 2 0.5564       31.76199999      33.34000000       1.84700001
+ 634 212 1 -1.1128      25.53599999      34.23499999       6.46900000
+ 635 212 2 0.5564       25.71600000      36.05900001       6.65099999
+ 636 212 2 0.5564       25.28300000      33.86599999       4.89499999
+ 637 213 1 -1.1128      31.67400000      33.16100000      13.10599999
+ 638 213 2 0.5564       31.79300000      34.86300000      13.28100001
+ 639 213 2 0.5564       30.42499999      32.92800000      11.78300001
+ 640 214 1 -1.1128      33.84400001      32.66800001      22.29599999
+ 641 214 2 0.5564       32.75000000      32.23400001      23.52400000
+ 642 214 2 0.5564       32.91700000      32.87500000      20.73600001
+ 643 215 1 -1.1128      31.60300000      30.54200000      30.80499999
+ 644 215 2 0.5564       33.45100000      30.80400001      30.46799999
+ 645 215 2 0.5564       31.57500001      28.81599999      31.75600000
+ 646 216 1 -1.1128      26.29500001      31.23499999      30.59900000
+ 647 216 2 0.5564       27.83399999      30.51499999      30.60700001
+ 648 216 2 0.5564       26.36200000      32.91999999      29.85600000
+
+Bonds
+
+ 1 1 1 2
+ 2 1 1 3
+ 3 1 4 5
+ 4 1 4 6
+ 5 1 7 8
+ 6 1 7 9
+ 7 1 10 11
+ 8 1 10 12
+ 9 1 13 14
+ 10 1 13 15
+ 11 1 16 17
+ 12 1 16 18
+ 13 1 19 20
+ 14 1 19 21
+ 15 1 22 23
+ 16 1 22 24
+ 17 1 25 26
+ 18 1 25 27
+ 19 1 28 29
+ 20 1 28 30
+ 21 1 31 32
+ 22 1 31 33
+ 23 1 34 35
+ 24 1 34 36
+ 25 1 37 38
+ 26 1 37 39
+ 27 1 40 41
+ 28 1 40 42
+ 29 1 43 44
+ 30 1 43 45
+ 31 1 46 47
+ 32 1 46 48
+ 33 1 49 50
+ 34 1 49 51
+ 35 1 52 53
+ 36 1 52 54
+ 37 1 55 56
+ 38 1 55 57
+ 39 1 58 59
+ 40 1 58 60
+ 41 1 61 62
+ 42 1 61 63
+ 43 1 64 65
+ 44 1 64 66
+ 45 1 67 68
+ 46 1 67 69
+ 47 1 70 71
+ 48 1 70 72
+ 49 1 73 74
+ 50 1 73 75
+ 51 1 76 77
+ 52 1 76 78
+ 53 1 79 80
+ 54 1 79 81
+ 55 1 82 83
+ 56 1 82 84
+ 57 1 85 86
+ 58 1 85 87
+ 59 1 88 89
+ 60 1 88 90
+ 61 1 91 92
+ 62 1 91 93
+ 63 1 94 95
+ 64 1 94 96
+ 65 1 97 98
+ 66 1 97 99
+ 67 1 100 101
+ 68 1 100 102
+ 69 1 103 104
+ 70 1 103 105
+ 71 1 106 107
+ 72 1 106 108
+ 73 1 109 110
+ 74 1 109 111
+ 75 1 112 113
+ 76 1 112 114
+ 77 1 115 116
+ 78 1 115 117
+ 79 1 118 119
+ 80 1 118 120
+ 81 1 121 122
+ 82 1 121 123
+ 83 1 124 125
+ 84 1 124 126
+ 85 1 127 128
+ 86 1 127 129
+ 87 1 130 131
+ 88 1 130 132
+ 89 1 133 134
+ 90 1 133 135
+ 91 1 136 137
+ 92 1 136 138
+ 93 1 139 140
+ 94 1 139 141
+ 95 1 142 143
+ 96 1 142 144
+ 97 1 145 146
+ 98 1 145 147
+ 99 1 148 149
+ 100 1 148 150
+ 101 1 151 152
+ 102 1 151 153
+ 103 1 154 155
+ 104 1 154 156
+ 105 1 157 158
+ 106 1 157 159
+ 107 1 160 161
+ 108 1 160 162
+ 109 1 163 164
+ 110 1 163 165
+ 111 1 166 167
+ 112 1 166 168
+ 113 1 169 170
+ 114 1 169 171
+ 115 1 172 173
+ 116 1 172 174
+ 117 1 175 176
+ 118 1 175 177
+ 119 1 178 179
+ 120 1 178 180
+ 121 1 181 182
+ 122 1 181 183
+ 123 1 184 185
+ 124 1 184 186
+ 125 1 187 188
+ 126 1 187 189
+ 127 1 190 191
+ 128 1 190 192
+ 129 1 193 194
+ 130 1 193 195
+ 131 1 196 197
+ 132 1 196 198
+ 133 1 199 200
+ 134 1 199 201
+ 135 1 202 203
+ 136 1 202 204
+ 137 1 205 206
+ 138 1 205 207
+ 139 1 208 209
+ 140 1 208 210
+ 141 1 211 212
+ 142 1 211 213
+ 143 1 214 215
+ 144 1 214 216
+ 145 1 217 218
+ 146 1 217 219
+ 147 1 220 221
+ 148 1 220 222
+ 149 1 223 224
+ 150 1 223 225
+ 151 1 226 227
+ 152 1 226 228
+ 153 1 229 230
+ 154 1 229 231
+ 155 1 232 233
+ 156 1 232 234
+ 157 1 235 236
+ 158 1 235 237
+ 159 1 238 239
+ 160 1 238 240
+ 161 1 241 242
+ 162 1 241 243
+ 163 1 244 245
+ 164 1 244 246
+ 165 1 247 248
+ 166 1 247 249
+ 167 1 250 251
+ 168 1 250 252
+ 169 1 253 254
+ 170 1 253 255
+ 171 1 256 257
+ 172 1 256 258
+ 173 1 259 260
+ 174 1 259 261
+ 175 1 262 263
+ 176 1 262 264
+ 177 1 265 266
+ 178 1 265 267
+ 179 1 268 269
+ 180 1 268 270
+ 181 1 271 272
+ 182 1 271 273
+ 183 1 274 275
+ 184 1 274 276
+ 185 1 277 278
+ 186 1 277 279
+ 187 1 280 281
+ 188 1 280 282
+ 189 1 283 284
+ 190 1 283 285
+ 191 1 286 287
+ 192 1 286 288
+ 193 1 289 290
+ 194 1 289 291
+ 195 1 292 293
+ 196 1 292 294
+ 197 1 295 296
+ 198 1 295 297
+ 199 1 298 299
+ 200 1 298 300
+ 201 1 301 302
+ 202 1 301 303
+ 203 1 304 305
+ 204 1 304 306
+ 205 1 307 308
+ 206 1 307 309
+ 207 1 310 311
+ 208 1 310 312
+ 209 1 313 314
+ 210 1 313 315
+ 211 1 316 317
+ 212 1 316 318
+ 213 1 319 320
+ 214 1 319 321
+ 215 1 322 323
+ 216 1 322 324
+ 217 1 325 326
+ 218 1 325 327
+ 219 1 328 329
+ 220 1 328 330
+ 221 1 331 332
+ 222 1 331 333
+ 223 1 334 335
+ 224 1 334 336
+ 225 1 337 338
+ 226 1 337 339
+ 227 1 340 341
+ 228 1 340 342
+ 229 1 343 344
+ 230 1 343 345
+ 231 1 346 347
+ 232 1 346 348
+ 233 1 349 350
+ 234 1 349 351
+ 235 1 352 353
+ 236 1 352 354
+ 237 1 355 356
+ 238 1 355 357
+ 239 1 358 359
+ 240 1 358 360
+ 241 1 361 362
+ 242 1 361 363
+ 243 1 364 365
+ 244 1 364 366
+ 245 1 367 368
+ 246 1 367 369
+ 247 1 370 371
+ 248 1 370 372
+ 249 1 373 374
+ 250 1 373 375
+ 251 1 376 377
+ 252 1 376 378
+ 253 1 379 380
+ 254 1 379 381
+ 255 1 382 383
+ 256 1 382 384
+ 257 1 385 386
+ 258 1 385 387
+ 259 1 388 389
+ 260 1 388 390
+ 261 1 391 392
+ 262 1 391 393
+ 263 1 394 395
+ 264 1 394 396
+ 265 1 397 398
+ 266 1 397 399
+ 267 1 400 401
+ 268 1 400 402
+ 269 1 403 404
+ 270 1 403 405
+ 271 1 406 407
+ 272 1 406 408
+ 273 1 409 410
+ 274 1 409 411
+ 275 1 412 413
+ 276 1 412 414
+ 277 1 415 416
+ 278 1 415 417
+ 279 1 418 419
+ 280 1 418 420
+ 281 1 421 422
+ 282 1 421 423
+ 283 1 424 425
+ 284 1 424 426
+ 285 1 427 428
+ 286 1 427 429
+ 287 1 430 431
+ 288 1 430 432
+ 289 1 433 434
+ 290 1 433 435
+ 291 1 436 437
+ 292 1 436 438
+ 293 1 439 440
+ 294 1 439 441
+ 295 1 442 443
+ 296 1 442 444
+ 297 1 445 446
+ 298 1 445 447
+ 299 1 448 449
+ 300 1 448 450
+ 301 1 451 452
+ 302 1 451 453
+ 303 1 454 455
+ 304 1 454 456
+ 305 1 457 458
+ 306 1 457 459
+ 307 1 460 461
+ 308 1 460 462
+ 309 1 463 464
+ 310 1 463 465
+ 311 1 466 467
+ 312 1 466 468
+ 313 1 469 470
+ 314 1 469 471
+ 315 1 472 473
+ 316 1 472 474
+ 317 1 475 476
+ 318 1 475 477
+ 319 1 478 479
+ 320 1 478 480
+ 321 1 481 482
+ 322 1 481 483
+ 323 1 484 485
+ 324 1 484 486
+ 325 1 487 488
+ 326 1 487 489
+ 327 1 490 491
+ 328 1 490 492
+ 329 1 493 494
+ 330 1 493 495
+ 331 1 496 497
+ 332 1 496 498
+ 333 1 499 500
+ 334 1 499 501
+ 335 1 502 503
+ 336 1 502 504
+ 337 1 505 506
+ 338 1 505 507
+ 339 1 508 509
+ 340 1 508 510
+ 341 1 511 512
+ 342 1 511 513
+ 343 1 514 515
+ 344 1 514 516
+ 345 1 517 518
+ 346 1 517 519
+ 347 1 520 521
+ 348 1 520 522
+ 349 1 523 524
+ 350 1 523 525
+ 351 1 526 527
+ 352 1 526 528
+ 353 1 529 530
+ 354 1 529 531
+ 355 1 532 533
+ 356 1 532 534
+ 357 1 535 536
+ 358 1 535 537
+ 359 1 538 539
+ 360 1 538 540
+ 361 1 541 542
+ 362 1 541 543
+ 363 1 544 545
+ 364 1 544 546
+ 365 1 547 548
+ 366 1 547 549
+ 367 1 550 551
+ 368 1 550 552
+ 369 1 553 554
+ 370 1 553 555
+ 371 1 556 557
+ 372 1 556 558
+ 373 1 559 560
+ 374 1 559 561
+ 375 1 562 563
+ 376 1 562 564
+ 377 1 565 566
+ 378 1 565 567
+ 379 1 568 569
+ 380 1 568 570
+ 381 1 571 572
+ 382 1 571 573
+ 383 1 574 575
+ 384 1 574 576
+ 385 1 577 578
+ 386 1 577 579
+ 387 1 580 581
+ 388 1 580 582
+ 389 1 583 584
+ 390 1 583 585
+ 391 1 586 587
+ 392 1 586 588
+ 393 1 589 590
+ 394 1 589 591
+ 395 1 592 593
+ 396 1 592 594
+ 397 1 595 596
+ 398 1 595 597
+ 399 1 598 599
+ 400 1 598 600
+ 401 1 601 602
+ 402 1 601 603
+ 403 1 604 605
+ 404 1 604 606
+ 405 1 607 608
+ 406 1 607 609
+ 407 1 610 611
+ 408 1 610 612
+ 409 1 613 614
+ 410 1 613 615
+ 411 1 616 617
+ 412 1 616 618
+ 413 1 619 620
+ 414 1 619 621
+ 415 1 622 623
+ 416 1 622 624
+ 417 1 625 626
+ 418 1 625 627
+ 419 1 628 629
+ 420 1 628 630
+ 421 1 631 632
+ 422 1 631 633
+ 423 1 634 635
+ 424 1 634 636
+ 425 1 637 638
+ 426 1 637 639
+ 427 1 640 641
+ 428 1 640 642
+ 429 1 643 644
+ 430 1 643 645
+ 431 1 646 647
+ 432 1 646 648
+
+Angles
+
+ 1 1 2 1 3
+ 2 1 5 4 6
+ 3 1 8 7 9
+ 4 1 11 10 12
+ 5 1 14 13 15
+ 6 1 17 16 18
+ 7 1 20 19 21
+ 8 1 23 22 24
+ 9 1 26 25 27
+ 10 1 29 28 30
+ 11 1 32 31 33
+ 12 1 35 34 36
+ 13 1 38 37 39
+ 14 1 41 40 42
+ 15 1 44 43 45
+ 16 1 47 46 48
+ 17 1 50 49 51
+ 18 1 53 52 54
+ 19 1 56 55 57
+ 20 1 59 58 60
+ 21 1 62 61 63
+ 22 1 65 64 66
+ 23 1 68 67 69
+ 24 1 71 70 72
+ 25 1 74 73 75
+ 26 1 77 76 78
+ 27 1 80 79 81
+ 28 1 83 82 84
+ 29 1 86 85 87
+ 30 1 89 88 90
+ 31 1 92 91 93
+ 32 1 95 94 96
+ 33 1 98 97 99
+ 34 1 101 100 102
+ 35 1 104 103 105
+ 36 1 107 106 108
+ 37 1 110 109 111
+ 38 1 113 112 114
+ 39 1 116 115 117
+ 40 1 119 118 120
+ 41 1 122 121 123
+ 42 1 125 124 126
+ 43 1 128 127 129
+ 44 1 131 130 132
+ 45 1 134 133 135
+ 46 1 137 136 138
+ 47 1 140 139 141
+ 48 1 143 142 144
+ 49 1 146 145 147
+ 50 1 149 148 150
+ 51 1 152 151 153
+ 52 1 155 154 156
+ 53 1 158 157 159
+ 54 1 161 160 162
+ 55 1 164 163 165
+ 56 1 167 166 168
+ 57 1 170 169 171
+ 58 1 173 172 174
+ 59 1 176 175 177
+ 60 1 179 178 180
+ 61 1 182 181 183
+ 62 1 185 184 186
+ 63 1 188 187 189
+ 64 1 191 190 192
+ 65 1 194 193 195
+ 66 1 197 196 198
+ 67 1 200 199 201
+ 68 1 203 202 204
+ 69 1 206 205 207
+ 70 1 209 208 210
+ 71 1 212 211 213
+ 72 1 215 214 216
+ 73 1 218 217 219
+ 74 1 221 220 222
+ 75 1 224 223 225
+ 76 1 227 226 228
+ 77 1 230 229 231
+ 78 1 233 232 234
+ 79 1 236 235 237
+ 80 1 239 238 240
+ 81 1 242 241 243
+ 82 1 245 244 246
+ 83 1 248 247 249
+ 84 1 251 250 252
+ 85 1 254 253 255
+ 86 1 257 256 258
+ 87 1 260 259 261
+ 88 1 263 262 264
+ 89 1 266 265 267
+ 90 1 269 268 270
+ 91 1 272 271 273
+ 92 1 275 274 276
+ 93 1 278 277 279
+ 94 1 281 280 282
+ 95 1 284 283 285
+ 96 1 287 286 288
+ 97 1 290 289 291
+ 98 1 293 292 294
+ 99 1 296 295 297
+ 100 1 299 298 300
+ 101 1 302 301 303
+ 102 1 305 304 306
+ 103 1 308 307 309
+ 104 1 311 310 312
+ 105 1 314 313 315
+ 106 1 317 316 318
+ 107 1 320 319 321
+ 108 1 323 322 324
+ 109 1 326 325 327
+ 110 1 329 328 330
+ 111 1 332 331 333
+ 112 1 335 334 336
+ 113 1 338 337 339
+ 114 1 341 340 342
+ 115 1 344 343 345
+ 116 1 347 346 348
+ 117 1 350 349 351
+ 118 1 353 352 354
+ 119 1 356 355 357
+ 120 1 359 358 360
+ 121 1 362 361 363
+ 122 1 365 364 366
+ 123 1 368 367 369
+ 124 1 371 370 372
+ 125 1 374 373 375
+ 126 1 377 376 378
+ 127 1 380 379 381
+ 128 1 383 382 384
+ 129 1 386 385 387
+ 130 1 389 388 390
+ 131 1 392 391 393
+ 132 1 395 394 396
+ 133 1 398 397 399
+ 134 1 401 400 402
+ 135 1 404 403 405
+ 136 1 407 406 408
+ 137 1 410 409 411
+ 138 1 413 412 414
+ 139 1 416 415 417
+ 140 1 419 418 420
+ 141 1 422 421 423
+ 142 1 425 424 426
+ 143 1 428 427 429
+ 144 1 431 430 432
+ 145 1 434 433 435
+ 146 1 437 436 438
+ 147 1 440 439 441
+ 148 1 443 442 444
+ 149 1 446 445 447
+ 150 1 449 448 450
+ 151 1 452 451 453
+ 152 1 455 454 456
+ 153 1 458 457 459
+ 154 1 461 460 462
+ 155 1 464 463 465
+ 156 1 467 466 468
+ 157 1 470 469 471
+ 158 1 473 472 474
+ 159 1 476 475 477
+ 160 1 479 478 480
+ 161 1 482 481 483
+ 162 1 485 484 486
+ 163 1 488 487 489
+ 164 1 491 490 492
+ 165 1 494 493 495
+ 166 1 497 496 498
+ 167 1 500 499 501
+ 168 1 503 502 504
+ 169 1 506 505 507
+ 170 1 509 508 510
+ 171 1 512 511 513
+ 172 1 515 514 516
+ 173 1 518 517 519
+ 174 1 521 520 522
+ 175 1 524 523 525
+ 176 1 527 526 528
+ 177 1 530 529 531
+ 178 1 533 532 534
+ 179 1 536 535 537
+ 180 1 539 538 540
+ 181 1 542 541 543
+ 182 1 545 544 546
+ 183 1 548 547 549
+ 184 1 551 550 552
+ 185 1 554 553 555
+ 186 1 557 556 558
+ 187 1 560 559 561
+ 188 1 563 562 564
+ 189 1 566 565 567
+ 190 1 569 568 570
+ 191 1 572 571 573
+ 192 1 575 574 576
+ 193 1 578 577 579
+ 194 1 581 580 582
+ 195 1 584 583 585
+ 196 1 587 586 588
+ 197 1 590 589 591
+ 198 1 593 592 594
+ 199 1 596 595 597
+ 200 1 599 598 600
+ 201 1 602 601 603
+ 202 1 605 604 606
+ 203 1 608 607 609
+ 204 1 611 610 612
+ 205 1 614 613 615
+ 206 1 617 616 618
+ 207 1 620 619 621
+ 208 1 623 622 624
+ 209 1 626 625 627
+ 210 1 629 628 630
+ 211 1 632 631 633
+ 212 1 635 634 636
+ 213 1 638 637 639
+ 214 1 641 640 642
+ 215 1 644 643 645
+ 216 1 647 646 648
diff --git a/tools/i-pi/examples/lammps/h2o-pimd-rpc/in.water_longrange b/tools/i-pi/examples/lammps/h2o-pimd-rpc/in.water_longrange
new file mode 100644
index 0000000000000000000000000000000000000000..0e0e09a5b88ceee9bd46c1f83c990f26dffe826e
--- /dev/null
+++ b/tools/i-pi/examples/lammps/h2o-pimd-rpc/in.water_longrange
@@ -0,0 +1,33 @@
+units		electron
+atom_style	full
+
+#pair_style	lj/cut/coul/long 17.01
+pair_style      lj/cut/tip4p/long 1 2 1 1 0.278072379 17.007
+bond_style      harmonic
+#bond_style      class2 
+angle_style     harmonic
+#kspace_style	pppm 0.0001
+kspace_style	pppm/tip4p 0.0001
+
+read_data	data.water_longrange
+pair_coeff  * * 0 0
+pair_coeff  1  1  0.000295147 5.96946
+
+neighbor	2.0 bin
+neigh_modify delay 0 every 1 check yes
+
+timestep	0.00025
+
+#velocity all create 298.0 2345187
+
+#thermo_style	multi
+#thermo		1
+
+#fix		1 all nvt temp 298.0 298.0 30.0 tchain 1
+#fix 1 all nve
+fix 1 all ipi rpc_long 32347 unix
+
+#dump		1 all xyz 25 dump.xyz
+
+run		100000000
+
diff --git a/tools/i-pi/examples/lammps/h2o-pimd-rpc/in.water_shortrange b/tools/i-pi/examples/lammps/h2o-pimd-rpc/in.water_shortrange
new file mode 100644
index 0000000000000000000000000000000000000000..6df6d16ee28ad5ea40cb33457c4fd10ec472b882
--- /dev/null
+++ b/tools/i-pi/examples/lammps/h2o-pimd-rpc/in.water_shortrange
@@ -0,0 +1,34 @@
+units		electron
+atom_style	full
+
+pair_style	lj/cut 0.51
+#pair_style      lj/cut/tip4p/long 1 2 1 1 0.278072379 17.007
+#bond_style      harmonic
+bond_style      class2 
+angle_style     harmonic
+#kspace_style	pppm 0.0001
+#kspace_style	pppm/tip4p 0.0001
+
+read_data	data.water_shortrange
+pair_coeff  * * 0 0.1
+#pair_coeff  1  1  0.000295147 5.96946
+
+#atom_modify sort 1 3.00
+neighbor	2.0 bin
+neigh_modify delay 0 every 1 check yes
+
+timestep	0.00025
+
+#velocity all create 298.0 2345187
+
+#thermo_style	multi
+#thermo		1
+
+#fix		1 all nvt temp 298.0 298.0 30.0 tchain 1
+#fix 1 all nve
+fix 1 all ipi rpc_short 32346 unix
+
+#dump		1 all xyz 25 dump.xyz
+
+run		100000000
+
diff --git a/tools/i-pi/examples/lammps/h2o-pimd-rpc/input.xml b/tools/i-pi/examples/lammps/h2o-pimd-rpc/input.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fc7596d0977e3d7b48c6bbdbca8ec646930904ed
--- /dev/null
+++ b/tools/i-pi/examples/lammps/h2o-pimd-rpc/input.xml
@@ -0,0 +1,27 @@
+<simulation>
+   <initialize nbeads='32'> 
+      <file mode='pdb'> water_298K.pdb </file>
+      <velocities mode="thermal" units='kelvin'> 298 </velocities>
+   </initialize>
+   <output prefix='rpc'>
+      <properties stride='1' filename='out'>  [ step, time{picosecond}, conserved, temperature{kelvin}, kinetic_cv, potential, pressure_cv{megapascal}] </properties>
+      <trajectory filename='pos' stride='20'> positions </trajectory>
+   </output>
+   <total_steps>500000</total_steps>
+   <prng><seed>32346</seed></prng>
+   <forces>
+      <socket mode='unix'>
+         <address>rpc_short</address>
+      </socket>
+      <socket mode='unix' nbeads='5'>
+         <address> rpc_long </address>
+      </socket>
+   </forces>
+   <ensemble mode='nvt'>
+      <thermostat mode='svr'>
+         <tau units='femtosecond'>25</tau>
+      </thermostat>
+      <timestep units='femtosecond'> 0.25</timestep>
+      <temperature units='kelvin'>298</temperature>
+   </ensemble>
+</simulation>
diff --git a/tools/i-pi/examples/lammps/h2o-pimd-rpc/water_298K.pdb b/tools/i-pi/examples/lammps/h2o-pimd-rpc/water_298K.pdb
new file mode 100644
index 0000000000000000000000000000000000000000..e8509c868e9f7ece5e82b1ee19d58a269f5db829
--- /dev/null
+++ b/tools/i-pi/examples/lammps/h2o-pimd-rpc/water_298K.pdb
@@ -0,0 +1,650 @@
+CRYST   35.233   35.233   35.233  90.00  90.00  90.00 P 1          1
+ATOM      1    O   1     1       3.846   5.672   1.323  0.00  0.00            0
+ATOM      2    H   1     1       2.979   7.054   0.857  0.00  0.00            0
+ATOM      3    H   1     1       5.525   5.697   0.451  0.00  0.00            0
+ATOM      4    O   1     1      34.557  34.341   3.078  0.00  0.00            0
+ATOM      5    H   1     1      33.722  34.689   4.840  0.00  0.00            0
+ATOM      6    H   1     1      36.029  33.220   3.711  0.00  0.00            0
+ATOM      7    O   1     1       5.591   1.963  13.477  0.00  0.00            0
+ATOM      8    H   1     1       7.265   1.864  13.851  0.00  0.00            0
+ATOM      9    H   1     1       5.009   3.555  13.916  0.00  0.00            0
+ATOM     10    O   1     1       1.060   2.061  21.718  0.00  0.00            0
+ATOM     11    H   1     1       0.757   0.261  21.820  0.00  0.00            0
+ATOM     12    H   1     1       0.213   3.013  23.047  0.00  0.00            0
+ATOM     13    O   1     1       1.200   1.337  29.006  0.00  0.00            0
+ATOM     14    H   1     1       0.818   1.884  30.732  0.00  0.00            0
+ATOM     15    H   1     1       2.883   1.825  29.011  0.00  0.00            0
+ATOM     16    O   1     1       1.331   1.386  34.306  0.00  0.00            0
+ATOM     17    H   1     1       2.392   2.898  34.846  0.00  0.00            0
+ATOM     18    H   1     1       0.814   0.532  35.836  0.00  0.00            0
+ATOM     19    O   1     1      31.451  10.201   0.726  0.00  0.00            0
+ATOM     20    H   1     1      32.282  10.877  -0.750  0.00  0.00            0
+ATOM     21    H   1     1      30.920  11.594   1.677  0.00  0.00            0
+ATOM     22    O   1     1       0.836  10.808   4.298  0.00  0.00            0
+ATOM     23    H   1     1       0.305  10.643   2.793  0.00  0.00            0
+ATOM     24    H   1     1      -0.356  10.334   5.524  0.00  0.00            0
+ATOM     25    O   1     1      34.381   5.979   9.194  0.00  0.00            0
+ATOM     26    H   1     1      33.616   7.673   8.857  0.00  0.00            0
+ATOM     27    H   1     1      35.115   5.260   7.618  0.00  0.00            0
+ATOM     28    O   1     1      33.212   6.480  24.278  0.00  0.00            0
+ATOM     29    H   1     1      31.624   6.908  23.521  0.00  0.00            0
+ATOM     30    H   1     1      32.544   4.990  24.982  0.00  0.00            0
+ATOM     31    O   1     1       1.992   9.002  26.863  0.00  0.00            0
+ATOM     32    H   1     1       1.856  10.175  25.579  0.00  0.00            0
+ATOM     33    H   1     1       0.519   8.099  26.386  0.00  0.00            0
+ATOM     34    O   1     1       2.054   8.660  32.515  0.00  0.00            0
+ATOM     35    H   1     1       2.167   8.727  30.494  0.00  0.00            0
+ATOM     36    H   1     1       2.374  10.513  33.038  0.00  0.00            0
+ATOM     37    O   1     1       3.402  16.639   3.008  0.00  0.00            0
+ATOM     38    H   1     1       4.127  15.872   4.446  0.00  0.00            0
+ATOM     39    H   1     1       2.905  18.339   3.160  0.00  0.00            0
+ATOM     40    O   1     1       4.222  15.444   8.072  0.00  0.00            0
+ATOM     41    H   1     1       5.211  16.756   8.299  0.00  0.00            0
+ATOM     42    H   1     1       2.560  15.492   8.860  0.00  0.00            0
+ATOM     43    O   1     1       2.831   9.246  16.488  0.00  0.00            0
+ATOM     44    H   1     1       2.869   8.023  18.050  0.00  0.00            0
+ATOM     45    H   1     1       3.960   8.467  15.154  0.00  0.00            0
+ATOM     46    O   1     1       5.563   6.003  20.907  0.00  0.00            0
+ATOM     47    H   1     1       4.653   4.638  21.480  0.00  0.00            0
+ATOM     48    H   1     1       6.405   6.208  22.529  0.00  0.00            0
+ATOM     49    O   1     1       2.087  13.370  22.913  0.00  0.00            0
+ATOM     50    H   1     1       2.832  14.804  23.422  0.00  0.00            0
+ATOM     51    H   1     1       1.434  13.509  21.196  0.00  0.00            0
+ATOM     52    O   1     1       3.369  17.886  25.109  0.00  0.00            0
+ATOM     53    H   1     1       3.655  17.200  26.766  0.00  0.00            0
+ATOM     54    H   1     1       4.772  18.977  24.500  0.00  0.00            0
+ATOM     55    O   1     1      34.764  20.803   0.948  0.00  0.00            0
+ATOM     56    H   1     1      35.210  21.267   2.816  0.00  0.00            0
+ATOM     57    H   1     1      35.962  21.726   0.131  0.00  0.00            0
+ATOM     58    O   1     1       2.836  24.178  15.229  0.00  0.00            0
+ATOM     59    H   1     1       2.795  22.346  14.876  0.00  0.00            0
+ATOM     60    H   1     1       2.414  24.115  17.130  0.00  0.00            0
+ATOM     61    O   1     1      33.000  24.481  15.230  0.00  0.00            0
+ATOM     62    H   1     1      34.640  24.804  15.013  0.00  0.00            0
+ATOM     63    H   1     1      32.401  25.764  14.295  0.00  0.00            0
+ATOM     64    O   1     1       0.404  26.779  23.400  0.00  0.00            0
+ATOM     65    H   1     1       1.353  27.248  24.987  0.00  0.00            0
+ATOM     66    H   1     1       1.546  28.050  22.317  0.00  0.00            0
+ATOM     67    O   1     1      34.222  21.380  25.418  0.00  0.00            0
+ATOM     68    H   1     1      35.669  20.151  25.317  0.00  0.00            0
+ATOM     69    H   1     1      32.960  21.180  23.992  0.00  0.00            0
+ATOM     70    O   1     1      33.259  17.438  32.480  0.00  0.00            0
+ATOM     71    H   1     1      33.314  18.782  33.883  0.00  0.00            0
+ATOM     72    H   1     1      32.743  18.181  30.871  0.00  0.00            0
+ATOM     73    O   1     1       4.463  21.979   3.936  0.00  0.00            0
+ATOM     74    H   1     1       5.856  23.084   3.400  0.00  0.00            0
+ATOM     75    H   1     1       3.986  22.180   5.602  0.00  0.00            0
+ATOM     76    O   1     1       6.258  25.851   8.520  0.00  0.00            0
+ATOM     77    H   1     1       5.767  27.693   8.476  0.00  0.00            0
+ATOM     78    H   1     1       7.202  25.506  10.186  0.00  0.00            0
+ATOM     79    O   1     1       0.601  29.737  12.747  0.00  0.00            0
+ATOM     80    H   1     1      -0.685  30.842  12.350  0.00  0.00            0
+ATOM     81    H   1     1       1.336  30.716  14.031  0.00  0.00            0
+ATOM     82    O   1     1       7.563  28.191  24.333  0.00  0.00            0
+ATOM     83    H   1     1       9.201  28.828  24.684  0.00  0.00            0
+ATOM     84    H   1     1       7.381  27.621  22.799  0.00  0.00            0
+ATOM     85    O   1     1       3.653  27.109  27.772  0.00  0.00            0
+ATOM     86    H   1     1       5.126  27.015  26.772  0.00  0.00            0
+ATOM     87    H   1     1       3.031  28.756  27.698  0.00  0.00            0
+ATOM     88    O   1     1       2.596  23.991  32.476  0.00  0.00            0
+ATOM     89    H   1     1       2.879  24.791  30.859  0.00  0.00            0
+ATOM     90    H   1     1       4.003  22.913  32.701  0.00  0.00            0
+ATOM     91    O   1     1       3.083  31.317   3.644  0.00  0.00            0
+ATOM     92    H   1     1       4.133  30.589   2.539  0.00  0.00            0
+ATOM     93    H   1     1       4.218  32.173   5.037  0.00  0.00            0
+ATOM     94    O   1     1       4.661  30.555   9.368  0.00  0.00            0
+ATOM     95    H   1     1       3.184  29.843  10.132  0.00  0.00            0
+ATOM     96    H   1     1       4.358  32.448   9.126  0.00  0.00            0
+ATOM     97    O   1     1       3.465  32.537  15.778  0.00  0.00            0
+ATOM     98    H   1     1       5.072  31.819  15.903  0.00  0.00            0
+ATOM     99    H   1     1       4.055  34.257  15.284  0.00  0.00            0
+ATOM    100    O   1     1       4.215  29.153  20.317  0.00  0.00            0
+ATOM    101    H   1     1       3.658  30.176  18.842  0.00  0.00            0
+ATOM    102    H   1     1       4.959  30.291  21.449  0.00  0.00            0
+ATOM    103    O   1     1       1.126  31.333  28.768  0.00  0.00            0
+ATOM    104    H   1     1       2.395  31.124  29.925  0.00  0.00            0
+ATOM    105    H   1     1       0.768  33.092  28.898  0.00  0.00            0
+ATOM    106    O   1     1       4.881  32.616  32.302  0.00  0.00            0
+ATOM    107    H   1     1       6.588  32.911  31.725  0.00  0.00            0
+ATOM    108    H   1     1       4.486  34.037  33.249  0.00  0.00            0
+ATOM    109    O   1     1       8.962   5.556   0.151  0.00  0.00            0
+ATOM    110    H   1     1       9.652   6.991   0.859  0.00  0.00            0
+ATOM    111    H   1     1       9.173   4.477   1.645  0.00  0.00            0
+ATOM    112    O   1     1       1.833   3.518   5.679  0.00  0.00            0
+ATOM    113    H   1     1       2.889   2.731   6.788  0.00  0.00            0
+ATOM    114    H   1     1       2.789   4.187   4.147  0.00  0.00            0
+ATOM    115    O   1     1      10.510  34.726  13.073  0.00  0.00            0
+ATOM    116    H   1     1      11.920  34.118  11.919  0.00  0.00            0
+ATOM    117    H   1     1      11.295  34.968  14.741  0.00  0.00            0
+ATOM    118    O   1     1       7.212   0.042  22.454  0.00  0.00            0
+ATOM    119    H   1     1       6.924   0.470  24.172  0.00  0.00            0
+ATOM    120    H   1     1       8.319   1.228  21.653  0.00  0.00            0
+ATOM    121    O   1     1       6.365   2.010  27.544  0.00  0.00            0
+ATOM    122    H   1     1       5.954   3.585  26.852  0.00  0.00            0
+ATOM    123    H   1     1       7.758   2.549  28.696  0.00  0.00            0
+ATOM    124    O   1     1      10.833   3.140  30.787  0.00  0.00            0
+ATOM    125    H   1     1      12.697   2.975  30.867  0.00  0.00            0
+ATOM    126    H   1     1      10.389   3.700  32.404  0.00  0.00            0
+ATOM    127    O   1     1       8.684   9.342   3.912  0.00  0.00            0
+ATOM    128    H   1     1       6.985   9.256   4.773  0.00  0.00            0
+ATOM    129    H   1     1       8.684  10.809   3.011  0.00  0.00            0
+ATOM    130    O   1     1       4.873   9.919   7.707  0.00  0.00            0
+ATOM    131    H   1     1       3.698   9.771   6.194  0.00  0.00            0
+ATOM    132    H   1     1       5.047  11.961   7.624  0.00  0.00            0
+ATOM    133    O   1     1      10.031   5.018   9.699  0.00  0.00            0
+ATOM    134    H   1     1       9.675   3.382  10.340  0.00  0.00            0
+ATOM    135    H   1     1       9.132   5.987  10.825  0.00  0.00            0
+ATOM    136    O   1     1      11.246   3.918  21.929  0.00  0.00            0
+ATOM    137    H   1     1      12.614   2.770  22.341  0.00  0.00            0
+ATOM    138    H   1     1      12.073   5.686  21.497  0.00  0.00            0
+ATOM    139    O   1     1       6.825   7.164  25.708  0.00  0.00            0
+ATOM    140    H   1     1       8.036   8.374  25.980  0.00  0.00            0
+ATOM    141    H   1     1       5.206   7.900  25.891  0.00  0.00            0
+ATOM    142    O   1     1      10.171  12.811   0.295  0.00  0.00            0
+ATOM    143    H   1     1      10.033  12.818  -1.609  0.00  0.00            0
+ATOM    144    H   1     1       9.880  14.492   0.480  0.00  0.00            0
+ATOM    145    O   1     1       8.190  17.402   1.253  0.00  0.00            0
+ATOM    146    H   1     1       9.472  18.531   1.253  0.00  0.00            0
+ATOM    147    H   1     1       6.351  17.817   1.568  0.00  0.00            0
+ATOM    148    O   1     1      11.233  16.188   8.299  0.00  0.00            0
+ATOM    149    H   1     1      10.291  17.689   8.166  0.00  0.00            0
+ATOM    150    H   1     1      12.768  17.123   8.733  0.00  0.00            0
+ATOM    151    O   1     1       6.386   8.002  12.846  0.00  0.00            0
+ATOM    152    H   1     1       7.701   8.896  13.655  0.00  0.00            0
+ATOM    153    H   1     1       5.591   8.877  11.519  0.00  0.00            0
+ATOM    154    O   1     1       8.184  10.419  18.848  0.00  0.00            0
+ATOM    155    H   1     1       9.498   9.434  19.905  0.00  0.00            0
+ATOM    156    H   1     1       6.882   9.027  18.948  0.00  0.00            0
+ATOM    157    O   1     1      10.806  14.431  21.328  0.00  0.00            0
+ATOM    158    H   1     1       9.177  13.531  20.670  0.00  0.00            0
+ATOM    159    H   1     1      11.344  15.696  20.448  0.00  0.00            0
+ATOM    160    O   1     1       9.237  13.928  30.341  0.00  0.00            0
+ATOM    161    H   1     1      10.779  14.839  30.522  0.00  0.00            0
+ATOM    162    H   1     1       9.965  13.192  28.899  0.00  0.00            0
+ATOM    163    O   1     1      10.918  21.707   1.864  0.00  0.00            0
+ATOM    164    H   1     1      10.280  23.449   2.279  0.00  0.00            0
+ATOM    165    H   1     1      12.708  21.456   1.749  0.00  0.00            0
+ATOM    166    O   1     1       9.353  16.125  13.927  0.00  0.00            0
+ATOM    167    H   1     1       9.938  17.594  14.618  0.00  0.00            0
+ATOM    168    H   1     1       9.518  16.360  12.244  0.00  0.00            0
+ATOM    169    O   1     1      10.371  11.107  14.268  0.00  0.00            0
+ATOM    170    H   1     1       9.644  10.406  15.859  0.00  0.00            0
+ATOM    171    H   1     1       9.434  12.523  14.117  0.00  0.00            0
+ATOM    172    O   1     1       3.351  22.769  20.196  0.00  0.00            0
+ATOM    173    H   1     1       2.055  23.686  21.503  0.00  0.00            0
+ATOM    174    H   1     1       2.452  21.401  19.413  0.00  0.00            0
+ATOM    175    O   1     1       6.836  21.329  23.199  0.00  0.00            0
+ATOM    176    H   1     1       8.249  20.848  22.320  0.00  0.00            0
+ATOM    177    H   1     1       5.668  21.841  21.886  0.00  0.00            0
+ATOM    178    O   1     1       4.604  15.649  30.043  0.00  0.00            0
+ATOM    179    H   1     1       6.453  15.217  30.207  0.00  0.00            0
+ATOM    180    H   1     1       3.822  14.762  31.562  0.00  0.00            0
+ATOM    181    O   1     1       7.125  19.976   9.421  0.00  0.00            0
+ATOM    182    H   1     1       5.918  20.453  10.730  0.00  0.00            0
+ATOM    183    H   1     1       8.099  21.496   9.491  0.00  0.00            0
+ATOM    184    O   1     1       9.063  25.912  13.186  0.00  0.00            0
+ATOM    185    H   1     1      10.350  26.572  12.367  0.00  0.00            0
+ATOM    186    H   1     1       9.680  24.367  13.697  0.00  0.00            0
+ATOM    187    O   1     1       8.022  22.343  17.042  0.00  0.00            0
+ATOM    188    H   1     1       9.144  23.367  18.074  0.00  0.00            0
+ATOM    189    H   1     1       6.562  23.462  16.852  0.00  0.00            0
+ATOM    190    O   1     1      10.762  26.285  19.963  0.00  0.00            0
+ATOM    191    H   1     1      11.036  27.966  20.538  0.00  0.00            0
+ATOM    192    H   1     1      11.078  25.401  21.456  0.00  0.00            0
+ATOM    193    O   1     1       9.158  22.902  28.391  0.00  0.00            0
+ATOM    194    H   1     1       8.219  23.528  27.085  0.00  0.00            0
+ATOM    195    H   1     1       8.089  21.760  29.509  0.00  0.00            0
+ATOM    196    O   1     1       6.219  20.158  31.921  0.00  0.00            0
+ATOM    197    H   1     1       5.635  18.511  31.161  0.00  0.00            0
+ATOM    198    H   1     1       7.530  19.624  33.071  0.00  0.00            0
+ATOM    199    O   1     1      11.191  31.509   2.617  0.00  0.00            0
+ATOM    200    H   1     1      10.460  32.214   4.108  0.00  0.00            0
+ATOM    201    H   1     1      13.176  31.751   2.577  0.00  0.00            0
+ATOM    202    O   1     1       4.748   0.055   8.605  0.00  0.00            0
+ATOM    203    H   1     1       5.380   0.517  10.183  0.00  0.00            0
+ATOM    204    H   1     1       6.050  -0.306   7.480  0.00  0.00            0
+ATOM    205    O   1     1       8.695  30.809  15.731  0.00  0.00            0
+ATOM    206    H   1     1       9.189  32.103  14.495  0.00  0.00            0
+ATOM    207    H   1     1       8.447  29.069  14.868  0.00  0.00            0
+ATOM    208    O   1     1      10.128  31.402  20.766  0.00  0.00            0
+ATOM    209    H   1     1       9.456  30.905  19.155  0.00  0.00            0
+ATOM    210    H   1     1       9.020  32.731  21.415  0.00  0.00            0
+ATOM    211    O   1     1      12.238  30.162  25.837  0.00  0.00            0
+ATOM    212    H   1     1      11.418  30.908  27.110  0.00  0.00            0
+ATOM    213    H   1     1      12.396  31.331  24.678  0.00  0.00            0
+ATOM    214    O   1     1      10.395  32.537  30.624  0.00  0.00            0
+ATOM    215    H   1     1      11.042  34.339  30.751  0.00  0.00            0
+ATOM    216    H   1     1      11.378  31.486  31.538  0.00  0.00            0
+ATOM    217    O   1     1      10.438   3.626   5.087  0.00  0.00            0
+ATOM    218    H   1     1      12.435   4.082   5.136  0.00  0.00            0
+ATOM    219    H   1     1       9.822   4.284   6.681  0.00  0.00            0
+ATOM    220    O   1     1      14.762   3.401  13.776  0.00  0.00            0
+ATOM    221    H   1     1      16.518   3.824  13.376  0.00  0.00            0
+ATOM    222    H   1     1      13.752   4.757  12.964  0.00  0.00            0
+ATOM    223    O   1     1      12.382   1.012  17.643  0.00  0.00            0
+ATOM    224    H   1     1      13.346   1.997  16.444  0.00  0.00            0
+ATOM    225    H   1     1      11.931   2.133  18.998  0.00  0.00            0
+ATOM    226    O   1     1      15.278   1.293  24.559  0.00  0.00            0
+ATOM    227    H   1     1      16.071   0.946  26.365  0.00  0.00            0
+ATOM    228    H   1     1      15.794   0.199  23.499  0.00  0.00            0
+ATOM    229    O   1     1      22.226  31.627  24.712  0.00  0.00            0
+ATOM    230    H   1     1      23.338  32.595  23.876  0.00  0.00            0
+ATOM    231    H   1     1      22.161  30.053  24.132  0.00  0.00            0
+ATOM    232    O   1     1      15.640   1.847  32.717  0.00  0.00            0
+ATOM    233    H   1     1      17.488   2.473  31.874  0.00  0.00            0
+ATOM    234    H   1     1      16.403   0.869  34.267  0.00  0.00            0
+ATOM    235    O   1     1      14.858  10.199   2.754  0.00  0.00            0
+ATOM    236    H   1     1      13.360  10.712   2.282  0.00  0.00            0
+ATOM    237    H   1     1      14.560   9.316   4.559  0.00  0.00            0
+ATOM    238    O   1     1      15.717   8.469  10.739  0.00  0.00            0
+ATOM    239    H   1     1      17.323   9.581  10.875  0.00  0.00            0
+ATOM    240    H   1     1      14.574   9.631  10.221  0.00  0.00            0
+ATOM    241    O   1     1      15.248  10.398  16.525  0.00  0.00            0
+ATOM    242    H   1     1      16.324   9.181  16.149  0.00  0.00            0
+ATOM    243    H   1     1      14.172  10.488  15.098  0.00  0.00            0
+ATOM    244    O   1     1      13.226   8.438  20.801  0.00  0.00            0
+ATOM    245    H   1     1      14.043   8.996  19.295  0.00  0.00            0
+ATOM    246    H   1     1      14.661   7.802  22.093  0.00  0.00            0
+ATOM    247    O   1     1      10.173  10.961  25.875  0.00  0.00            0
+ATOM    248    H   1     1      11.477  10.223  26.940  0.00  0.00            0
+ATOM    249    H   1     1      11.269  10.738  24.343  0.00  0.00            0
+ATOM    250    O   1     1      12.792   7.737  29.173  0.00  0.00            0
+ATOM    251    H   1     1      12.199   6.038  29.475  0.00  0.00            0
+ATOM    252    H   1     1      14.427   7.450  29.617  0.00  0.00            0
+ATOM    253    O   1     1      15.180  19.498   3.578  0.00  0.00            0
+ATOM    254    H   1     1      14.883  17.596   4.080  0.00  0.00            0
+ATOM    255    H   1     1      16.754  19.579   2.626  0.00  0.00            0
+ATOM    256    O   1     1      12.517  11.093   7.701  0.00  0.00            0
+ATOM    257    H   1     1      12.224  12.778   7.555  0.00  0.00            0
+ATOM    258    H   1     1      11.150  10.393   7.057  0.00  0.00            0
+ATOM    259    O   1     1      16.266  16.271  10.758  0.00  0.00            0
+ATOM    260    H   1     1      16.507  15.795  12.768  0.00  0.00            0
+ATOM    261    H   1     1      17.725  16.977  10.292  0.00  0.00            0
+ATOM    262    O   1     1      14.069  18.399  18.897  0.00  0.00            0
+ATOM    263    H   1     1      15.513  17.523  18.155  0.00  0.00            0
+ATOM    264    H   1     1      14.958  18.709  20.673  0.00  0.00            0
+ATOM    265    O   1     1      14.099  15.480  25.510  0.00  0.00            0
+ATOM    266    H   1     1      13.698  16.872  26.938  0.00  0.00            0
+ATOM    267    H   1     1      12.567  15.379  24.444  0.00  0.00            0
+ATOM    268    O   1     1      13.309  17.574  30.292  0.00  0.00            0
+ATOM    269    H   1     1      14.937  16.934  30.810  0.00  0.00            0
+ATOM    270    H   1     1      13.969  19.494  30.012  0.00  0.00            0
+ATOM    271    O   1     1      18.371  23.257   0.925  0.00  0.00            0
+ATOM    272    H   1     1      19.479  23.480   2.321  0.00  0.00            0
+ATOM    273    H   1     1      19.087  24.325  -0.369  0.00  0.00            0
+ATOM    274    O   1     1      12.100  21.730  11.355  0.00  0.00            0
+ATOM    275    H   1     1      13.141  22.287  12.743  0.00  0.00            0
+ATOM    276    H   1     1      13.467  22.236  10.244  0.00  0.00            0
+ATOM    277    O   1     1      12.163  23.290  23.597  0.00  0.00            0
+ATOM    278    H   1     1      11.324  22.736  24.949  0.00  0.00            0
+ATOM    279    H   1     1      13.882  22.872  23.840  0.00  0.00            0
+ATOM    280    O   1     1      20.173  26.761  22.628  0.00  0.00            0
+ATOM    281    H   1     1      20.206  26.532  20.792  0.00  0.00            0
+ATOM    282    H   1     1      21.556  25.742  23.389  0.00  0.00            0
+ATOM    283    O   1     1      16.701  21.165  22.605  0.00  0.00            0
+ATOM    284    H   1     1      18.028  20.686  23.848  0.00  0.00            0
+ATOM    285    H   1     1      17.104  22.866  21.949  0.00  0.00            0
+ATOM    286    O   1     1      11.391  26.461  33.705  0.00  0.00            0
+ATOM    287    H   1     1       9.841  27.192  34.048  0.00  0.00            0
+ATOM    288    H   1     1      11.776  25.540  35.243  0.00  0.00            0
+ATOM    289    O   1     1       9.898  25.989   4.553  0.00  0.00            0
+ATOM    290    H   1     1       8.902  26.131   6.039  0.00  0.00            0
+ATOM    291    H   1     1      10.287  27.806   4.376  0.00  0.00            0
+ATOM    292    O   1     1      14.308  26.960  10.877  0.00  0.00            0
+ATOM    293    H   1     1      15.302  27.405  12.173  0.00  0.00            0
+ATOM    294    H   1     1      15.463  26.151   9.633  0.00  0.00            0
+ATOM    295    O   1     1      13.433  22.960  16.904  0.00  0.00            0
+ATOM    296    H   1     1      13.409  24.131  18.132  0.00  0.00            0
+ATOM    297    H   1     1      13.624  21.191  17.520  0.00  0.00            0
+ATOM    298    O   1     1      16.409  26.768  26.875  0.00  0.00            0
+ATOM    299    H   1     1      17.590  26.987  25.431  0.00  0.00            0
+ATOM    300    H   1     1      14.751  27.703  26.230  0.00  0.00            0
+ATOM    301    O   1     1      14.405  22.733  29.892  0.00  0.00            0
+ATOM    302    H   1     1      15.423  23.079  28.494  0.00  0.00            0
+ATOM    303    H   1     1      12.826  23.259  29.416  0.00  0.00            0
+ATOM    304    O   1     1       6.905  29.408   0.749  0.00  0.00            0
+ATOM    305    H   1     1       8.428  30.483   1.567  0.00  0.00            0
+ATOM    306    H   1     1       6.353  30.814  -0.444  0.00  0.00            0
+ATOM    307    O   1     1       9.189  34.159   6.509  0.00  0.00            0
+ATOM    308    H   1     1      10.198  34.193   8.002  0.00  0.00            0
+ATOM    309    H   1     1       9.890  35.692   5.785  0.00  0.00            0
+ATOM    310    O   1     1      14.256  32.316   9.369  0.00  0.00            0
+ATOM    311    H   1     1      15.733  32.867   9.486  0.00  0.00            0
+ATOM    312    H   1     1      14.754  30.670  10.090  0.00  0.00            0
+ATOM    313    O   1     1      14.714  30.841  16.516  0.00  0.00            0
+ATOM    314    H   1     1      13.748  29.551  17.279  0.00  0.00            0
+ATOM    315    H   1     1      13.218  31.933  16.614  0.00  0.00            0
+ATOM    316    O   1     1      18.409  33.641  20.611  0.00  0.00            0
+ATOM    317    H   1     1      19.601  32.274  21.115  0.00  0.00            0
+ATOM    318    H   1     1      17.360  32.655  19.518  0.00  0.00            0
+ATOM    319    O   1     1      16.062  28.638  32.207  0.00  0.00            0
+ATOM    320    H   1     1      14.648  27.958  33.253  0.00  0.00            0
+ATOM    321    H   1     1      15.752  28.014  30.522  0.00  0.00            0
+ATOM    322    O   1     1      16.200  30.895   1.473  0.00  0.00            0
+ATOM    323    H   1     1      16.626  29.968  -0.130  0.00  0.00            0
+ATOM    324    H   1     1      17.167  29.833   2.927  0.00  0.00            0
+ATOM    325    O   1     1      20.278   3.529   6.048  0.00  0.00            0
+ATOM    326    H   1     1      20.977   3.611   4.575  0.00  0.00            0
+ATOM    327    H   1     1      21.312   4.513   7.251  0.00  0.00            0
+ATOM    328    O   1     1      23.079   5.778  10.408  0.00  0.00            0
+ATOM    329    H   1     1      24.650   6.259  10.838  0.00  0.00            0
+ATOM    330    H   1     1      22.342   7.609  10.178  0.00  0.00            0
+ATOM    331    O   1     1      19.581   2.031  12.110  0.00  0.00            0
+ATOM    332    H   1     1      19.039   1.082  10.440  0.00  0.00            0
+ATOM    333    H   1     1      21.141   2.991  11.851  0.00  0.00            0
+ATOM    334    O   1     1      22.005   3.223  23.178  0.00  0.00            0
+ATOM    335    H   1     1      21.429   4.090  24.554  0.00  0.00            0
+ATOM    336    H   1     1      20.654   1.791  22.711  0.00  0.00            0
+ATOM    337    O   1     1      16.630   6.422  23.792  0.00  0.00            0
+ATOM    338    H   1     1      16.219   4.804  24.406  0.00  0.00            0
+ATOM    339    H   1     1      17.066   7.128  25.282  0.00  0.00            0
+ATOM    340    O   1     1      21.676   5.564  28.158  0.00  0.00            0
+ATOM    341    H   1     1      20.658   6.717  29.185  0.00  0.00            0
+ATOM    342    H   1     1      23.413   5.828  28.996  0.00  0.00            0
+ATOM    343    O   1     1      15.257   5.265   5.626  0.00  0.00            0
+ATOM    344    H   1     1      16.914   4.519   5.490  0.00  0.00            0
+ATOM    345    H   1     1      15.144   6.150   6.972  0.00  0.00            0
+ATOM    346    O   1     1      20.137  11.082  10.437  0.00  0.00            0
+ATOM    347    H   1     1      20.021  10.947   8.733  0.00  0.00            0
+ATOM    348    H   1     1      21.025  12.555  10.853  0.00  0.00            0
+ATOM    349    O   1     1      23.089  14.627  12.437  0.00  0.00            0
+ATOM    350    H   1     1      24.716  15.254  12.736  0.00  0.00            0
+ATOM    351    H   1     1      23.284  13.228  13.653  0.00  0.00            0
+ATOM    352    O   1     1      24.083  12.649  22.566  0.00  0.00            0
+ATOM    353    H   1     1      22.397  12.663  23.042  0.00  0.00            0
+ATOM    354    H   1     1      24.901  13.851  23.565  0.00  0.00            0
+ATOM    355    O   1     1      17.865   7.909  30.036  0.00  0.00            0
+ATOM    356    H   1     1      17.509   8.045  31.982  0.00  0.00            0
+ATOM    357    H   1     1      18.078   9.582  29.318  0.00  0.00            0
+ATOM    358    O   1     1      18.824   8.486   0.104  0.00  0.00            0
+ATOM    359    H   1     1      19.997  10.191  -0.057  0.00  0.00            0
+ATOM    360    H   1     1      17.077   8.998   0.779  0.00  0.00            0
+ATOM    361    O   1     1      20.122   9.143   5.343  0.00  0.00            0
+ATOM    362    H   1     1      19.373   8.819   3.821  0.00  0.00            0
+ATOM    363    H   1     1      21.998   8.776   5.128  0.00  0.00            0
+ATOM    364    O   1     1      16.413  14.459   5.855  0.00  0.00            0
+ATOM    365    H   1     1      15.536  13.007   5.239  0.00  0.00            0
+ATOM    366    H   1     1      16.006  14.725   7.737  0.00  0.00            0
+ATOM    367    O   1     1      17.561  15.066  15.654  0.00  0.00            0
+ATOM    368    H   1     1      17.575  13.398  16.055  0.00  0.00            0
+ATOM    369    H   1     1      18.978  15.828  16.400  0.00  0.00            0
+ATOM    370    O   1     1      26.374  17.047  24.817  0.00  0.00            0
+ATOM    371    H   1     1      27.983  17.098  25.632  0.00  0.00            0
+ATOM    372    H   1     1      25.629  18.751  24.919  0.00  0.00            0
+ATOM    373    O   1     1      19.784  12.960  28.706  0.00  0.00            0
+ATOM    374    H   1     1      21.662  13.055  28.871  0.00  0.00            0
+ATOM    375    H   1     1      19.545  14.070  27.143  0.00  0.00            0
+ATOM    376    O   1     1      17.891  16.733  32.499  0.00  0.00            0
+ATOM    377    H   1     1      18.327  15.240  31.277  0.00  0.00            0
+ATOM    378    H   1     1      18.633  18.335  31.693  0.00  0.00            0
+ATOM    379    O   1     1      23.733  23.024   1.663  0.00  0.00            0
+ATOM    380    H   1     1      24.800  24.052   2.776  0.00  0.00            0
+ATOM    381    H   1     1      24.693  22.618   0.198  0.00  0.00            0
+ATOM    382    O   1     1      20.789  18.440   9.443  0.00  0.00            0
+ATOM    383    H   1     1      20.766  17.257   7.881  0.00  0.00            0
+ATOM    384    H   1     1      21.896  17.345  10.385  0.00  0.00            0
+ATOM    385    O   1     1      21.574  17.493  17.838  0.00  0.00            0
+ATOM    386    H   1     1      20.597  18.955  17.218  0.00  0.00            0
+ATOM    387    H   1     1      22.538  16.874  16.251  0.00  0.00            0
+ATOM    388    O   1     1      19.168  14.748  24.131  0.00  0.00            0
+ATOM    389    H   1     1      19.711  16.390  23.712  0.00  0.00            0
+ATOM    390    H   1     1      17.429  14.695  24.403  0.00  0.00            0
+ATOM    391    O   1     1      22.149  20.198  24.977  0.00  0.00            0
+ATOM    392    H   1     1      21.639  20.924  26.486  0.00  0.00            0
+ATOM    393    H   1     1      22.656  21.657  24.411  0.00  0.00            0
+ATOM    394    O   1     1      20.565  20.792  29.600  0.00  0.00            0
+ATOM    395    H   1     1      22.264  20.409  30.214  0.00  0.00            0
+ATOM    396    H   1     1      20.548  22.408  30.597  0.00  0.00            0
+ATOM    397    O   1     1      20.802  26.547   9.615  0.00  0.00            0
+ATOM    398    H   1     1      20.099  27.984   8.338  0.00  0.00            0
+ATOM    399    H   1     1      21.277  27.539  11.325  0.00  0.00            0
+ATOM    400    O   1     1      16.283  23.589   7.779  0.00  0.00            0
+ATOM    401    H   1     1      16.093  21.973   6.712  0.00  0.00            0
+ATOM    402    H   1     1      17.901  22.971   8.154  0.00  0.00            0
+ATOM    403    O   1     1      18.469  29.798  13.568  0.00  0.00            0
+ATOM    404    H   1     1      19.712  31.216  13.506  0.00  0.00            0
+ATOM    405    H   1     1      16.872  30.343  14.396  0.00  0.00            0
+ATOM    406    O   1     1      18.790  21.712  16.060  0.00  0.00            0
+ATOM    407    H   1     1      19.878  23.090  16.485  0.00  0.00            0
+ATOM    408    H   1     1      17.201  22.326  15.819  0.00  0.00            0
+ATOM    409    O   1     1      21.747  26.084  16.349  0.00  0.00            0
+ATOM    410    H   1     1      20.783  27.021  15.300  0.00  0.00            0
+ATOM    411    H   1     1      22.705  27.328  17.206  0.00  0.00            0
+ATOM    412    O   1     1      20.769  26.211  32.050  0.00  0.00            0
+ATOM    413    H   1     1      21.488  27.404  33.328  0.00  0.00            0
+ATOM    414    H   1     1      18.989  26.710  32.145  0.00  0.00            0
+ATOM    415    O   1     1      19.820  29.181   5.559  0.00  0.00            0
+ATOM    416    H   1     1      20.991  29.509   4.109  0.00  0.00            0
+ATOM    417    H   1     1      19.431  31.018   6.221  0.00  0.00            0
+ATOM    418    O   1     1      19.240  33.867   7.993  0.00  0.00            0
+ATOM    419    H   1     1      19.107  35.039   6.604  0.00  0.00            0
+ATOM    420    H   1     1      20.697  33.671   9.063  0.00  0.00            0
+ATOM    421    O   1     1      22.511  34.976  15.793  0.00  0.00            0
+ATOM    422    H   1     1      23.716  36.163  16.603  0.00  0.00            0
+ATOM    423    H   1     1      21.699  36.150  14.467  0.00  0.00            0
+ATOM    424    O   1     1      22.622  30.284  19.069  0.00  0.00            0
+ATOM    425    H   1     1      22.049  31.351  17.725  0.00  0.00            0
+ATOM    426    H   1     1      24.411  30.773  19.576  0.00  0.00            0
+ATOM    427    O   1     1      18.639  33.611  28.369  0.00  0.00            0
+ATOM    428    H   1     1      18.226  32.159  29.103  0.00  0.00            0
+ATOM    429    H   1     1      19.906  33.008  27.158  0.00  0.00            0
+ATOM    430    O   1     1      22.520   1.325  31.926  0.00  0.00            0
+ATOM    431    H   1     1      22.803   2.668  30.796  0.00  0.00            0
+ATOM    432    H   1     1      21.045   0.425  31.122  0.00  0.00            0
+ATOM    433    O   1     1      21.754   3.789   1.159  0.00  0.00            0
+ATOM    434    H   1     1      22.085   2.785  -0.180  0.00  0.00            0
+ATOM    435    H   1     1      20.850   5.175   0.610  0.00  0.00            0
+ATOM    436    O   1     1      28.457   5.539  12.133  0.00  0.00            0
+ATOM    437    H   1     1      29.489   4.390  11.182  0.00  0.00            0
+ATOM    438    H   1     1      29.161   7.131  12.587  0.00  0.00            0
+ATOM    439    O   1     1      22.495   5.966  17.324  0.00  0.00            0
+ATOM    440    H   1     1      24.377   5.379  17.393  0.00  0.00            0
+ATOM    441    H   1     1      21.906   5.491  18.857  0.00  0.00            0
+ATOM    442    O   1     1      28.128   3.304  22.287  0.00  0.00            0
+ATOM    443    H   1     1      28.123   2.999  20.491  0.00  0.00            0
+ATOM    444    H   1     1      26.533   3.355  22.876  0.00  0.00            0
+ATOM    445    O   1     1      28.378  10.455  27.266  0.00  0.00            0
+ATOM    446    H   1     1      30.019  10.292  28.051  0.00  0.00            0
+ATOM    447    H   1     1      28.635  10.039  25.463  0.00  0.00            0
+ATOM    448    O   1     1      27.031   8.353  34.806  0.00  0.00            0
+ATOM    449    H   1     1      26.116   9.984  34.571  0.00  0.00            0
+ATOM    450    H   1     1      28.685   8.951  34.739  0.00  0.00            0
+ATOM    451    O   1     1      24.951   8.160   4.454  0.00  0.00            0
+ATOM    452    H   1     1      25.930   9.616   5.160  0.00  0.00            0
+ATOM    453    H   1     1      25.947   7.994   2.724  0.00  0.00            0
+ATOM    454    O   1     1      26.937  12.436   6.869  0.00  0.00            0
+ATOM    455    H   1     1      25.492  13.284   6.708  0.00  0.00            0
+ATOM    456    H   1     1      27.689  13.332   8.266  0.00  0.00            0
+ATOM    457    O   1     1      23.365  11.214  16.933  0.00  0.00            0
+ATOM    458    H   1     1      22.247   9.744  16.789  0.00  0.00            0
+ATOM    459    H   1     1      23.264  12.035  18.539  0.00  0.00            0
+ATOM    460    O   1     1      28.321   8.759  22.158  0.00  0.00            0
+ATOM    461    H   1     1      27.662   6.895  22.482  0.00  0.00            0
+ATOM    462    H   1     1      26.971   9.710  21.902  0.00  0.00            0
+ATOM    463    O   1     1      27.071   6.109  29.555  0.00  0.00            0
+ATOM    464    H   1     1      27.591   7.663  28.857  0.00  0.00            0
+ATOM    465    H   1     1      27.304   6.320  31.261  0.00  0.00            0
+ATOM    466    O   1     1      22.474  11.704  34.640  0.00  0.00            0
+ATOM    467    H   1     1      22.752  13.304  35.584  0.00  0.00            0
+ATOM    468    H   1     1      22.840  12.090  33.030  0.00  0.00            0
+ATOM    469    O   1     1      21.656  14.971   5.615  0.00  0.00            0
+ATOM    470    H   1     1      21.690  15.860   3.977  0.00  0.00            0
+ATOM    471    H   1     1      19.964  14.225   5.774  0.00  0.00            0
+ATOM    472    O   1     1      28.539  21.492   9.820  0.00  0.00            0
+ATOM    473    H   1     1      27.288  22.181   8.688  0.00  0.00            0
+ATOM    474    H   1     1      28.065  22.420  11.602  0.00  0.00            0
+ATOM    475    O   1     1      28.364  16.020  11.109  0.00  0.00            0
+ATOM    476    H   1     1      30.033  16.649  12.089  0.00  0.00            0
+ATOM    477    H   1     1      28.456  17.440  10.082  0.00  0.00            0
+ATOM    478    O   1     1       0.054  13.686  18.103  0.00  0.00            0
+ATOM    479    H   1     1      -1.714  12.928  18.841  0.00  0.00            0
+ATOM    480    H   1     1       1.008  12.429  17.383  0.00  0.00            0
+ATOM    481    O   1     1      24.636  12.894  29.957  0.00  0.00            0
+ATOM    482    H   1     1      25.906  13.914  31.183  0.00  0.00            0
+ATOM    483    H   1     1      25.641  11.609  29.162  0.00  0.00            0
+ATOM    484    O   1     1      21.548  17.250   0.749  0.00  0.00            0
+ATOM    485    H   1     1      21.843  19.026   0.905  0.00  0.00            0
+ATOM    486    H   1     1      20.385  16.716  -0.697  0.00  0.00            0
+ATOM    487    O   1     1      26.095  27.274   4.520  0.00  0.00            0
+ATOM    488    H   1     1      27.889  26.458   4.505  0.00  0.00            0
+ATOM    489    H   1     1      25.648  26.970   6.165  0.00  0.00            0
+ATOM    490    O   1     1      23.610  22.515   8.008  0.00  0.00            0
+ATOM    491    H   1     1      22.653  21.187   8.739  0.00  0.00            0
+ATOM    492    H   1     1      22.286  24.095   8.444  0.00  0.00            0
+ATOM    493    O   1     1      27.355  18.929  18.180  0.00  0.00            0
+ATOM    494    H   1     1      27.200  20.349  17.155  0.00  0.00            0
+ATOM    495    H   1     1      25.579  18.322  18.770  0.00  0.00            0
+ATOM    496    O   1     1      26.765  23.633  14.444  0.00  0.00            0
+ATOM    497    H   1     1      27.441  25.298  13.651  0.00  0.00            0
+ATOM    498    H   1     1      25.086  24.256  14.749  0.00  0.00            0
+ATOM    499    O   1     1      31.478  20.769  20.986  0.00  0.00            0
+ATOM    500    H   1     1      30.440  22.509  21.135  0.00  0.00            0
+ATOM    501    H   1     1      30.567  19.656  20.043  0.00  0.00            0
+ATOM    502    O   1     1      24.812  20.412  32.668  0.00  0.00            0
+ATOM    503    H   1     1      26.242  21.478  31.874  0.00  0.00            0
+ATOM    504    H   1     1      25.787  19.023  33.158  0.00  0.00            0
+ATOM    505    O   1     1      22.105  29.076   0.928  0.00  0.00            0
+ATOM    506    H   1     1      23.296  27.923   1.739  0.00  0.00            0
+ATOM    507    H   1     1      22.623  30.994   0.882  0.00  0.00            0
+ATOM    508    O   1     1      29.572  31.256   8.626  0.00  0.00            0
+ATOM    509    H   1     1      30.795  30.203   7.736  0.00  0.00            0
+ATOM    510    H   1     1      28.277  31.519   7.260  0.00  0.00            0
+ATOM    511    O   1     1      31.817  34.843  18.283  0.00  0.00            0
+ATOM    512    H   1     1      32.438  34.389  16.474  0.00  0.00            0
+ATOM    513    H   1     1      32.743  36.422  18.341  0.00  0.00            0
+ATOM    514    O   1     1      27.915  25.601  19.033  0.00  0.00            0
+ATOM    515    H   1     1      29.358  26.561  19.190  0.00  0.00            0
+ATOM    516    H   1     1      28.148  24.429  17.530  0.00  0.00            0
+ATOM    517    O   1     1      24.548  24.654  24.025  0.00  0.00            0
+ATOM    518    H   1     1      25.528  25.635  22.824  0.00  0.00            0
+ATOM    519    H   1     1      25.300  25.200  25.645  0.00  0.00            0
+ATOM    520    O   1     1      28.540  22.922  30.370  0.00  0.00            0
+ATOM    521    H   1     1      27.414  24.096  29.781  0.00  0.00            0
+ATOM    522    H   1     1      29.674  23.914  31.873  0.00  0.00            0
+ATOM    523    O   1     1      24.969  33.623   1.014  0.00  0.00            0
+ATOM    524    H   1     1      26.521  33.058   1.518  0.00  0.00            0
+ATOM    525    H   1     1      24.990  34.322  -0.683  0.00  0.00            0
+ATOM    526    O   1     1      23.075  32.171  11.324  0.00  0.00            0
+ATOM    527    H   1     1      23.316  32.775  13.097  0.00  0.00            0
+ATOM    528    H   1     1      24.460  33.203  10.662  0.00  0.00            0
+ATOM    529    O   1     1      27.497   2.736  17.224  0.00  0.00            0
+ATOM    530    H   1     1      28.397   3.415  15.715  0.00  0.00            0
+ATOM    531    H   1     1      28.234   1.233  17.412  0.00  0.00            0
+ATOM    532    O   1     1      26.369  33.060  22.077  0.00  0.00            0
+ATOM    533    H   1     1      26.170  34.746  22.264  0.00  0.00            0
+ATOM    534    H   1     1      27.592  32.404  23.321  0.00  0.00            0
+ATOM    535    O   1     1      30.221  30.950  25.843  0.00  0.00            0
+ATOM    536    H   1     1      30.305  29.038  26.208  0.00  0.00            0
+ATOM    537    H   1     1      30.363  31.979  27.414  0.00  0.00            0
+ATOM    538    O   1     1      24.973  26.732  28.607  0.00  0.00            0
+ATOM    539    H   1     1      25.385  28.369  29.248  0.00  0.00            0
+ATOM    540    H   1     1      23.330  26.597  29.234  0.00  0.00            0
+ATOM    541    O   1     1      32.165   4.857   2.258  0.00  0.00            0
+ATOM    542    H   1     1      32.417   6.195   1.157  0.00  0.00            0
+ATOM    543    H   1     1      32.615   3.727   1.112  0.00  0.00            0
+ATOM    544    O   1     1      28.067   3.533   5.217  0.00  0.00            0
+ATOM    545    H   1     1      26.960   4.447   4.158  0.00  0.00            0
+ATOM    546    H   1     1      29.875   3.863   4.448  0.00  0.00            0
+ATOM    547    O   1     1      33.279   2.782  13.028  0.00  0.00            0
+ATOM    548    H   1     1      33.708   3.955  11.817  0.00  0.00            0
+ATOM    549    H   1     1      33.656   3.545  14.631  0.00  0.00            0
+ATOM    550    O   1     1      34.278   4.944  17.492  0.00  0.00            0
+ATOM    551    H   1     1      33.438   6.563  17.876  0.00  0.00            0
+ATOM    552    H   1     1      34.906   4.452  18.995  0.00  0.00            0
+ATOM    553    O   1     1      32.363   1.908  26.092  0.00  0.00            0
+ATOM    554    H   1     1      31.941   1.683  24.268  0.00  0.00            0
+ATOM    555    H   1     1      33.850   1.390  26.904  0.00  0.00            0
+ATOM    556    O   1     1      27.982   0.418  28.241  0.00  0.00            0
+ATOM    557    H   1     1      27.516   2.080  28.309  0.00  0.00            0
+ATOM    558    H   1     1      29.593   0.176  27.299  0.00  0.00            0
+ATOM    559    O   1     1      28.845  14.672   2.724  0.00  0.00            0
+ATOM    560    H   1     1      27.963  13.930   4.139  0.00  0.00            0
+ATOM    561    H   1     1      30.386  15.714   3.379  0.00  0.00            0
+ATOM    562    O   1     1      28.083  10.618  14.298  0.00  0.00            0
+ATOM    563    H   1     1      28.623  12.160  13.293  0.00  0.00            0
+ATOM    564    H   1     1      26.486  11.015  15.379  0.00  0.00            0
+ATOM    565    O   1     1      33.867  10.545  13.306  0.00  0.00            0
+ATOM    566    H   1     1      35.165   9.612  13.810  0.00  0.00            0
+ATOM    567    H   1     1      33.615  10.270  11.513  0.00  0.00            0
+ATOM    568    O   1     1      31.790   9.696  18.223  0.00  0.00            0
+ATOM    569    H   1     1      30.484   9.334  19.421  0.00  0.00            0
+ATOM    570    H   1     1      30.834  10.096  16.929  0.00  0.00            0
+ATOM    571    O   1     1      30.141  15.006  21.532  0.00  0.00            0
+ATOM    572    H   1     1      28.565  15.594  22.099  0.00  0.00            0
+ATOM    573    H   1     1      30.942  14.253  23.077  0.00  0.00            0
+ATOM    574    O   1     1      32.798  10.732  30.680  0.00  0.00            0
+ATOM    575    H   1     1      34.073   9.528  30.799  0.00  0.00            0
+ATOM    576    H   1     1      32.991  11.512  28.983  0.00  0.00            0
+ATOM    577    O   1     1      33.652  16.265   5.086  0.00  0.00            0
+ATOM    578    H   1     1      35.399  16.239   4.730  0.00  0.00            0
+ATOM    579    H   1     1      33.503  17.939   5.631  0.00  0.00            0
+ATOM    580    O   1     1      31.947  10.799   7.943  0.00  0.00            0
+ATOM    581    H   1     1      29.894  10.549   7.619  0.00  0.00            0
+ATOM    582    H   1     1      32.271  12.414   7.075  0.00  0.00            0
+ATOM    583    O   1     1       0.329  15.516  11.746  0.00  0.00            0
+ATOM    584    H   1     1      -0.446  14.249  12.939  0.00  0.00            0
+ATOM    585    H   1     1      -0.685  17.018  11.935  0.00  0.00            0
+ATOM    586    O   1     1       4.262  19.165  14.308  0.00  0.00            0
+ATOM    587    H   1     1       3.579  17.691  14.920  0.00  0.00            0
+ATOM    588    H   1     1       5.723  19.183  15.204  0.00  0.00            0
+ATOM    589    O   1     1      32.995  13.546  25.948  0.00  0.00            0
+ATOM    590    H   1     1      32.167  15.060  26.787  0.00  0.00            0
+ATOM    591    H   1     1      34.425  13.800  25.007  0.00  0.00            0
+ATOM    592    O   1     1       1.773  13.524  34.037  0.00  0.00            0
+ATOM    593    H   1     1       0.227  14.409  33.446  0.00  0.00            0
+ATOM    594    H   1     1       2.167  14.670  35.511  0.00  0.00            0
+ATOM    595    O   1     1      33.029  20.529   7.247  0.00  0.00            0
+ATOM    596    H   1     1      34.388  21.414   8.003  0.00  0.00            0
+ATOM    597    H   1     1      31.451  20.831   8.182  0.00  0.00            0
+ATOM    598    O   1     1       2.037  24.250  10.251  0.00  0.00            0
+ATOM    599    H   1     1       3.743  25.008   9.876  0.00  0.00            0
+ATOM    600    H   1     1       1.894  25.043  11.903  0.00  0.00            0
+ATOM    601    O   1     1      32.753  19.259  13.976  0.00  0.00            0
+ATOM    602    H   1     1      32.792  20.886  13.792  0.00  0.00            0
+ATOM    603    H   1     1      34.334  18.799  14.976  0.00  0.00            0
+ATOM    604    O   1     1       0.396  18.673  18.699  0.00  0.00            0
+ATOM    605    H   1     1      -1.211  18.950  19.127  0.00  0.00            0
+ATOM    606    H   1     1       0.469  16.977  18.436  0.00  0.00            0
+ATOM    607    O   1     1      30.855  18.370  27.959  0.00  0.00            0
+ATOM    608    H   1     1      29.759  19.681  28.690  0.00  0.00            0
+ATOM    609    H   1     1      32.103  19.477  26.763  0.00  0.00            0
+ATOM    610    O   1     1      27.723  15.992  33.091  0.00  0.00            0
+ATOM    611    H   1     1      29.390  16.423  32.192  0.00  0.00            0
+ATOM    612    H   1     1      27.801  15.859  34.804  0.00  0.00            0
+ATOM    613    O   1     1      31.068  27.895   3.348  0.00  0.00            0
+ATOM    614    H   1     1      32.517  27.825   4.610  0.00  0.00            0
+ATOM    615    H   1     1      31.529  29.459   2.324  0.00  0.00            0
+ATOM    616    O   1     1      35.039  28.008   6.663  0.00  0.00            0
+ATOM    617    H   1     1      35.966  26.934   7.683  0.00  0.00            0
+ATOM    618    H   1     1      36.055  28.336   5.336  0.00  0.00            0
+ATOM    619    O   1     1      29.356  28.196  13.025  0.00  0.00            0
+ATOM    620    H   1     1      29.210  29.335  14.589  0.00  0.00            0
+ATOM    621    H   1     1      28.874  29.629  11.867  0.00  0.00            0
+ATOM    622    O   1     1      32.386  28.434  18.961  0.00  0.00            0
+ATOM    623    H   1     1      33.368  28.574  20.411  0.00  0.00            0
+ATOM    624    H   1     1      33.410  27.406  17.949  0.00  0.00            0
+ATOM    625    O   1     1      30.898  25.390  25.799  0.00  0.00            0
+ATOM    626    H   1     1      32.369  25.913  24.580  0.00  0.00            0
+ATOM    627    H   1     1      31.317  24.075  27.029  0.00  0.00            0
+ATOM    628    O   1     1      32.259  25.611  33.104  0.00  0.00            0
+ATOM    629    H   1     1      32.238  25.736  34.806  0.00  0.00            0
+ATOM    630    H   1     1      33.920  25.042  32.775  0.00  0.00            0
+ATOM    631    O   1     1      30.290  32.645   1.341  0.00  0.00            0
+ATOM    632    H   1     1      29.949  32.793  -0.430  0.00  0.00            0
+ATOM    633    H   1     1      31.762  33.340   1.847  0.00  0.00            0
+ATOM    634    O   1     1      25.536  34.235   6.469  0.00  0.00            0
+ATOM    635    H   1     1      25.716  36.059   6.651  0.00  0.00            0
+ATOM    636    H   1     1      25.283  33.866   4.895  0.00  0.00            0
+ATOM    637    O   1     1      31.674  33.161  13.106  0.00  0.00            0
+ATOM    638    H   1     1      31.793  34.863  13.281  0.00  0.00            0
+ATOM    639    H   1     1      30.425  32.928  11.783  0.00  0.00            0
+ATOM    640    O   1     1      33.844  32.668  22.296  0.00  0.00            0
+ATOM    641    H   1     1      32.750  32.234  23.524  0.00  0.00            0
+ATOM    642    H   1     1      32.917  32.875  20.736  0.00  0.00            0
+ATOM    643    O   1     1      31.603  30.542  30.805  0.00  0.00            0
+ATOM    644    H   1     1      33.451  30.804  30.468  0.00  0.00            0
+ATOM    645    H   1     1      31.575  28.816  31.756  0.00  0.00            0
+ATOM    646    O   1     1      26.295  31.235  30.599  0.00  0.00            0
+ATOM    647    H   1     1      27.834  30.515  30.607  0.00  0.00            0
+ATOM    648    H   1     1      26.362  32.920  29.856  0.00  0.00            0
+END
diff --git a/tools/i-pi/examples/lammps/h2o-pimd/data.water b/tools/i-pi/examples/lammps/h2o-pimd/data.water
new file mode 100644
index 0000000000000000000000000000000000000000..13c75e993391340233222a511f10b475c6240737
--- /dev/null
+++ b/tools/i-pi/examples/lammps/h2o-pimd/data.water
@@ -0,0 +1,1331 @@
+LAMMPS Description
+ 
+         648  atoms
+         432  bonds
+         216  angles
+ 
+           2  atom types
+           1  bond types
+           1  angle types
+ 
+         0 35.233 xlo xhi
+         0 35.233 ylo yhi
+         0 35.233 zlo zhi
+ 
+Masses
+ 
+  1 15.9994
+  2  1.0080
+ 
+Bond Coeffs
+ 
+  1    1.78    0.2708585 -0.327738785 0.231328959
+ 
+Angle Coeffs
+ 
+  1    0.0700  107.400000
+
+Atoms
+ 
+ 1 1 1 -1.1128       3.84600000       5.67200001       1.32300000
+ 2 1 2 0.5564        2.97900000       7.05400000       0.85700000
+ 3 1 2 0.5564        5.52500001       5.69700001       0.45100000
+ 4 2 1 -1.1128      34.55700001      34.34100000       3.07800000
+ 5 2 2 0.5564       33.72200001      34.68900000       4.84000001
+ 6 2 2 0.5564       36.02900000      33.22000001       3.71100001
+ 7 3 1 -1.1128       5.59100000       1.96299999      13.47700000
+ 8 3 2 0.5564        7.26500000       1.86400000      13.85100001
+ 9 3 2 0.5564        5.00899999       3.55500000      13.91599999
+ 10 4 1 -1.1128       1.06000000       2.06100000      21.71800001
+ 11 4 2 0.5564        0.75700000       0.26100000      21.82000000
+ 12 4 2 0.5564        0.21300001       3.01299999      23.04700000
+ 13 5 1 -1.1128       1.20000000       1.33700000      29.00599999
+ 14 5 2 0.5564        0.81800000       1.88399999      30.73200000
+ 15 5 2 0.5564        2.88300001       1.82500000      29.01100000
+ 16 6 1 -1.1128       1.33100001       1.38599999      34.30600001
+ 17 6 2 0.5564        2.39200001       2.89799999      34.84600000
+ 18 6 2 0.5564        0.81400000       0.53200001      35.83600000
+ 19 7 1 -1.1128      31.45100000      10.20100000       0.72599999
+ 20 7 2 0.5564       32.28199999      10.87699999      -0.75000000
+ 21 7 2 0.5564       30.91999999      11.59399999       1.67700000
+ 22 8 1 -1.1128       0.83600000      10.80800001       4.29800000
+ 23 8 2 0.5564        0.30500000      10.64300001       2.79300000
+ 24 8 2 0.5564       -0.35600001      10.33400000       5.52400000
+ 25 9 1 -1.1128      34.38100001       5.97900000       9.19400000
+ 26 9 2 0.5564       33.61600000       7.67300000       8.85700000
+ 27 9 2 0.5564       35.11500000       5.25999999       7.61800001
+ 28 10 1 -1.1128      33.21200000       6.48000000      24.27799999
+ 29 10 2 0.5564       31.62400000       6.90800001      23.52100001
+ 30 10 2 0.5564       32.54400000       4.99000000      24.98200000
+ 31 11 1 -1.1128       1.99200000       9.00199999      26.86300000
+ 32 11 2 0.5564        1.85600000      10.17500000      25.57899999
+ 33 11 2 0.5564        0.51900000       8.09899999      26.38599999
+ 34 12 1 -1.1128       2.05400000       8.66000000      32.51499999
+ 35 12 2 0.5564        2.16699999       8.72700000      30.49400000
+ 36 12 2 0.5564        2.37400001      10.51300000      33.03799999
+ 37 13 1 -1.1128       3.40200000      16.63900001       3.00800000
+ 38 13 2 0.5564        4.12700001      15.87200001       4.44600001
+ 39 13 2 0.5564        2.90500001      18.33899999       3.15999999
+ 40 14 1 -1.1128       4.22200000      15.44400000       8.07200000
+ 41 14 2 0.5564        5.21100000      16.75600000       8.29900001
+ 42 14 2 0.5564        2.56000000      15.49200001       8.86000000
+ 43 15 1 -1.1128       2.83100000       9.24599999      16.48800000
+ 44 15 2 0.5564        2.86900001       8.02300001      18.05000000
+ 45 15 2 0.5564        3.96000000       8.46700001      15.15400000
+ 46 16 1 -1.1128       5.56300000       6.00300000      20.90700000
+ 47 16 2 0.5564        4.65300000       4.63800000      21.48000000
+ 48 16 2 0.5564        6.40500000       6.20800000      22.52899999
+ 49 17 1 -1.1128       2.08700001      13.37000000      22.91299999
+ 50 17 2 0.5564        2.83200000      14.80400001      23.42200000
+ 51 17 2 0.5564        1.43400000      13.50900000      21.19599999
+ 52 18 1 -1.1128       3.36900000      17.88600000      25.10900001
+ 53 18 2 0.5564        3.65500000      17.20000000      26.76599999
+ 54 18 2 0.5564        4.77200001      18.97699999      24.49999999
+ 55 19 1 -1.1128      34.76400000      20.80300000       0.94800001
+ 56 19 2 0.5564       35.20999999      21.26700001       2.81599999
+ 57 19 2 0.5564       35.96200001      21.72599999       0.13099999
+ 58 20 1 -1.1128       2.83600000      24.17799999      15.22900000
+ 59 20 2 0.5564        2.79500000      22.34599999      14.87600001
+ 60 20 2 0.5564        2.41399999      24.11500000      17.13000001
+ 61 21 1 -1.1128      33.00000000      24.48100000      15.23000000
+ 62 21 2 0.5564       34.63999999      24.80400001      15.01299999
+ 63 21 2 0.5564       32.40100000      25.76400000      14.29500001
+ 64 22 1 -1.1128       0.40399999      26.77900001      23.39999999
+ 65 22 2 0.5564        1.35300001      27.24800000      24.98700001
+ 66 22 2 0.5564        1.54600001      28.05000000      22.31700001
+ 67 23 1 -1.1128      34.22200000      21.38000000      25.41799999
+ 68 23 2 0.5564       35.66899999      20.15100000      25.31700001
+ 69 23 2 0.5564       32.96000000      21.18000000      23.99200000
+ 70 24 1 -1.1128      33.25900000      17.43800000      32.48000000
+ 71 24 2 0.5564       33.31399999      18.78200000      33.88300001
+ 72 24 2 0.5564       32.74300001      18.18100001      30.87100000
+ 73 25 1 -1.1128       4.46300000      21.97900000       3.93600000
+ 74 25 2 0.5564        5.85600000      23.08400001       3.39999999
+ 75 25 2 0.5564        3.98600000      22.18000000       5.60200000
+ 76 26 1 -1.1128       6.25800000      25.85100001       8.52000000
+ 77 26 2 0.5564        5.76700000      27.69300001       8.47600000
+ 78 26 2 0.5564        7.20200001      25.50600000      10.18600000
+ 79 27 1 -1.1128       0.60099999      29.73699999      12.74700001
+ 80 27 2 0.5564       -0.68500000      30.84200000      12.34999999
+ 81 27 2 0.5564        1.33600000      30.71600000      14.03099999
+ 82 28 1 -1.1128       7.56300000      28.19100001      24.33300000
+ 83 28 2 0.5564        9.20100000      28.82800000      24.68400000
+ 84 28 2 0.5564        7.38100001      27.62100000      22.79900000
+ 85 29 1 -1.1128       3.65300000      27.10900001      27.77200001
+ 86 29 2 0.5564        5.12600000      27.01500000      26.77200001
+ 87 29 2 0.5564        3.03099999      28.75600000      27.69800000
+ 88 30 1 -1.1128       2.59600001      23.99100001      32.47600000
+ 89 30 2 0.5564        2.87900000      24.79099999      30.85899999
+ 90 30 2 0.5564        4.00300000      22.91299999      32.70099999
+ 91 31 1 -1.1128       3.08300000      31.31700001       3.64399999
+ 92 31 2 0.5564        4.13300000      30.58900001       2.53900001
+ 93 31 2 0.5564        4.21800000      32.17300001       5.03700001
+ 94 32 1 -1.1128       4.66100001      30.55500000       9.36799999
+ 95 32 2 0.5564        3.18400001      29.84300000      10.13200000
+ 96 32 2 0.5564        4.35800000      32.44800000       9.12600000
+ 97 33 1 -1.1128       3.46499999      32.53700000      15.77800000
+ 98 33 2 0.5564        5.07200000      31.81899999      15.90300000
+ 99 33 2 0.5564        4.05500001      34.25699999      15.28400000
+ 100 34 1 -1.1128       4.21500000      29.15299999      20.31700001
+ 101 34 2 0.5564        3.65799999      30.17600000      18.84200000
+ 102 34 2 0.5564        4.95899999      30.29100000      21.44900001
+ 103 35 1 -1.1128       1.12600000      31.33300000      28.76800001
+ 104 35 2 0.5564        2.39500000      31.12399999      29.92500000
+ 105 35 2 0.5564        0.76800001      33.09199999      28.89799999
+ 106 36 1 -1.1128       4.88100000      32.61600000      32.30200000
+ 107 36 2 0.5564        6.58800000      32.91100000      31.72500001
+ 108 36 2 0.5564        4.48599999      34.03700001      33.24900001
+ 109 37 1 -1.1128       8.96200001       5.55600000       0.15100000
+ 110 37 2 0.5564        9.65200000       6.99100001       0.85899999
+ 111 37 2 0.5564        9.17300001       4.47700000       1.64500000
+ 112 38 1 -1.1128       1.83300001       3.51799999       5.67900001
+ 113 38 2 0.5564        2.88900000       2.73100000       6.78800000
+ 114 38 2 0.5564        2.78900000       4.18700000       4.14700000
+ 115 39 1 -1.1128      10.51000001      34.72599999      13.07300001
+ 116 39 2 0.5564       11.91999999      34.11800000      11.91900001
+ 117 39 2 0.5564       11.29500001      34.96800000      14.74100000
+ 118 40 1 -1.1128       7.21200000       0.04199999      22.45399999
+ 119 40 2 0.5564        6.92400000       0.47000000      24.17200000
+ 120 40 2 0.5564        8.31900000       1.22799999      21.65300000
+ 121 41 1 -1.1128       6.36500000       2.01000000      27.54400000
+ 122 41 2 0.5564        5.95400000       3.58500000      26.85199999
+ 123 41 2 0.5564        7.75800001       2.54900000      28.69600000
+ 124 42 1 -1.1128      10.83300001       3.14000000      30.78699999
+ 125 42 2 0.5564       12.69700001       2.97500000      30.86700000
+ 126 42 2 0.5564       10.38899999       3.70000001      32.40399999
+ 127 43 1 -1.1128       8.68400000       9.34200001       3.91200001
+ 128 43 2 0.5564        6.98500000       9.25600001       4.77299999
+ 129 43 2 0.5564        8.68400000      10.80899999       3.01100000
+ 130 44 1 -1.1128       4.87299999       9.91900001       7.70700000
+ 131 44 2 0.5564        3.69800000       9.77100000       6.19400000
+ 132 44 2 0.5564        5.04700000      11.96100000       7.62400000
+ 133 45 1 -1.1128      10.03099999       5.01800000       9.69900000
+ 134 45 2 0.5564        9.67500001       3.38199999      10.34000000
+ 135 45 2 0.5564        9.13200000       5.98700001      10.82500000
+ 136 46 1 -1.1128      11.24599999       3.91800000      21.92900000
+ 137 46 2 0.5564       12.61400001       2.77000000      22.34100000
+ 138 46 2 0.5564       12.07300001       5.68600001      21.49699999
+ 139 47 1 -1.1128       6.82500000       7.16400000      25.70799999
+ 140 47 2 0.5564        8.03600000       8.37400001      25.98000001
+ 141 47 2 0.5564        5.20600001       7.90000000      25.89099999
+ 142 48 1 -1.1128      10.17099999      12.81100001       0.29500001
+ 143 48 2 0.5564       10.03300000      12.81800000      -1.60900000
+ 144 48 2 0.5564        9.87999999      14.49200001       0.48000000
+ 145 49 1 -1.1128       8.19000000      17.40200000       1.25299999
+ 146 49 2 0.5564        9.47199999      18.53100000       1.25299999
+ 147 49 2 0.5564        6.35100000      17.81700000       1.56800001
+ 148 50 1 -1.1128      11.23300000      16.18800001       8.29900001
+ 149 50 2 0.5564       10.29100000      17.68900000       8.16600001
+ 150 50 2 0.5564       12.76800001      17.12300001       8.73299999
+ 151 51 1 -1.1128       6.38599999       8.00199999      12.84600000
+ 152 51 2 0.5564        7.70099999       8.89600000      13.65500000
+ 153 51 2 0.5564        5.59100000       8.87699999      11.51900000
+ 154 52 1 -1.1128       8.18400001      10.41900000      18.84799999
+ 155 52 2 0.5564        9.49800000       9.43400000      19.90500001
+ 156 52 2 0.5564        6.88200000       9.02699999      18.94800001
+ 157 53 1 -1.1128      10.80600000      14.43100000      21.32799999
+ 158 53 2 0.5564        9.17700001      13.53100000      20.67000000
+ 159 53 2 0.5564       11.34400000      15.69600000      20.44800000
+ 160 54 1 -1.1128       9.23700000      13.92800000      30.34100000
+ 161 54 2 0.5564       10.77900001      14.83900000      30.52199999
+ 162 54 2 0.5564        9.96500000      13.19199999      28.89900000
+ 163 55 1 -1.1128      10.91800000      21.70700000       1.86400000
+ 164 55 2 0.5564       10.28000000      23.44900001       2.27900000
+ 165 55 2 0.5564       12.70799999      21.45600000       1.74900000
+ 166 56 1 -1.1128       9.35300001      16.12500000      13.92699999
+ 167 56 2 0.5564        9.93799999      17.59399999      14.61800001
+ 168 56 2 0.5564        9.51799999      16.36000001      12.24400000
+ 169 57 1 -1.1128      10.37099999      11.10700000      14.26800000
+ 170 57 2 0.5564        9.64399999      10.40600001      15.85899999
+ 171 57 2 0.5564        9.43400000      12.52300000      14.11699999
+ 172 58 1 -1.1128       3.35100000      22.76899999      20.19599999
+ 173 58 2 0.5564        2.05500001      23.68600001      21.50300001
+ 174 58 2 0.5564        2.45200000      21.40100000      19.41300000
+ 175 59 1 -1.1128       6.83600000      21.32900000      23.19899999
+ 176 59 2 0.5564        8.24900001      20.84799999      22.32000001
+ 177 59 2 0.5564        5.66800001      21.84099999      21.88600000
+ 178 60 1 -1.1128       4.60399999      15.64900000      30.04300000
+ 179 60 2 0.5564        6.45300001      15.21699999      30.20700000
+ 180 60 2 0.5564        3.82200001      14.76199999      31.56200000
+ 181 61 1 -1.1128       7.12500000      19.97600001       9.42100001
+ 182 61 2 0.5564        5.91800000      20.45300001      10.72999999
+ 183 61 2 0.5564        8.09899999      21.49600001       9.49100000
+ 184 62 1 -1.1128       9.06299999      25.91200001      13.18600000
+ 185 62 2 0.5564       10.34999999      26.57199999      12.36700001
+ 186 62 2 0.5564        9.67999999      24.36700001      13.69700001
+ 187 63 1 -1.1128       8.02200000      22.34299999      17.04199999
+ 188 63 2 0.5564        9.14400000      23.36700001      18.07399999
+ 189 63 2 0.5564        6.56200000      23.46200000      16.85199999
+ 190 64 1 -1.1128      10.76199999      26.28499999      19.96299999
+ 191 64 2 0.5564       11.03600000      27.96599999      20.53800000
+ 192 64 2 0.5564       11.07800000      25.40100000      21.45600000
+ 193 65 1 -1.1128       9.15800000      22.90199999      28.39100000
+ 194 65 2 0.5564        8.21900000      23.52800001      27.08499999
+ 195 65 2 0.5564        8.08900000      21.76000000      29.50900000
+ 196 66 1 -1.1128       6.21900000      20.15800000      31.92100000
+ 197 66 2 0.5564        5.63500000      18.51099999      31.16100000
+ 198 66 2 0.5564        7.53000000      19.62400000      33.07100000
+ 199 67 1 -1.1128      11.19100001      31.50900000       2.61700000
+ 200 67 2 0.5564       10.46000001      32.21399999       4.10800000
+ 201 67 2 0.5564       13.17600000      31.75099999       2.57700000
+ 202 68 1 -1.1128       4.74799999       0.05500001       8.60500000
+ 203 68 2 0.5564        5.38000000       0.51700000      10.18300000
+ 204 68 2 0.5564        6.05000000      -0.30600001       7.48000000
+ 205 69 1 -1.1128       8.69500000      30.80899999      15.73100000
+ 206 69 2 0.5564        9.18899999      32.10300000      14.49500000
+ 207 69 2 0.5564        8.44699999      29.06900000      14.86800000
+ 208 70 1 -1.1128      10.12799999      31.40200000      20.76599999
+ 209 70 2 0.5564        9.45600000      30.90500001      19.15500000
+ 210 70 2 0.5564        9.01999999      32.73100000      21.41500000
+ 211 71 1 -1.1128      12.23800001      30.16200000      25.83699999
+ 212 71 2 0.5564       11.41799999      30.90800001      27.10999999
+ 213 71 2 0.5564       12.39600001      31.33100001      24.67800000
+ 214 72 1 -1.1128      10.39500000      32.53700000      30.62400000
+ 215 72 2 0.5564       11.04199999      34.33899999      30.75099999
+ 216 72 2 0.5564       11.37800001      31.48599999      31.53800000
+ 217 73 1 -1.1128      10.43800000       3.62599999       5.08700001
+ 218 73 2 0.5564       12.43500001       4.08200000       5.13600000
+ 219 73 2 0.5564        9.82200001       4.28400000       6.68100000
+ 220 74 1 -1.1128      14.76199999       3.40100000      13.77599999
+ 221 74 2 0.5564       16.51799999       3.82400000      13.37600000
+ 222 74 2 0.5564       13.75200000       4.75700000      12.96400000
+ 223 75 1 -1.1128      12.38199999       1.01200001      17.64300001
+ 224 75 2 0.5564       13.34599999       1.99700000      16.44400000
+ 225 75 2 0.5564       11.93100000       2.13300000      18.99800001
+ 226 76 1 -1.1128      15.27799999       1.29300000      24.55900000
+ 227 76 2 0.5564       16.07100000       0.94600000      26.36500000
+ 228 76 2 0.5564       15.79399999       0.19899999      23.49900000
+ 229 77 1 -1.1128      22.22600000      31.62700000      24.71199999
+ 230 77 2 0.5564       23.33800001      32.59500000      23.87600001
+ 231 77 2 0.5564       22.16100000      30.05300000      24.13200000
+ 232 78 1 -1.1128      15.63999999       1.84700001      32.71700000
+ 233 78 2 0.5564       17.48800000       2.47300000      31.87400000
+ 234 78 2 0.5564       16.40300001       0.86900001      34.26700001
+ 235 79 1 -1.1128      14.85800001      10.19899999       2.75400001
+ 236 79 2 0.5564       13.36000001      10.71199999       2.28199999
+ 237 79 2 0.5564       14.56000000       9.31600000       4.55900000
+ 238 80 1 -1.1128      15.71700000       8.46900000      10.73900000
+ 239 80 2 0.5564       17.32300000       9.58100000      10.87500000
+ 240 80 2 0.5564       14.57400000       9.63100000      10.22099999
+ 241 81 1 -1.1128      15.24800000      10.39800000      16.52500001
+ 242 81 2 0.5564       16.32400001       9.18100001      16.14899999
+ 243 81 2 0.5564       14.17200000      10.48800000      15.09800001
+ 244 82 1 -1.1128      13.22600000       8.43800000      20.80100001
+ 245 82 2 0.5564       14.04300000       8.99600000      19.29500001
+ 246 82 2 0.5564       14.66100001       7.80200000      22.09300000
+ 247 83 1 -1.1128      10.17300001      10.96100000      25.87500000
+ 248 83 2 0.5564       11.47700000      10.22300000      26.94000000
+ 249 83 2 0.5564       11.26900000      10.73800000      24.34299999
+ 250 84 1 -1.1128      12.79200000       7.73699999      29.17300001
+ 251 84 2 0.5564       12.19899999       6.03799999      29.47499999
+ 252 84 2 0.5564       14.42700000       7.44999999      29.61700000
+ 253 85 1 -1.1128      15.18000000      19.49800000       3.57800000
+ 254 85 2 0.5564       14.88300001      17.59600001       4.08000001
+ 255 85 2 0.5564       16.75400001      19.57899999       2.62599999
+ 256 86 1 -1.1128      12.51700000      11.09300000       7.70099999
+ 257 86 2 0.5564       12.22400001      12.77800000       7.55500000
+ 258 86 2 0.5564       11.15000000      10.39299999       7.05700000
+ 259 87 1 -1.1128      16.26600000      16.27099999      10.75800001
+ 260 87 2 0.5564       16.50700001      15.79500000      12.76800001
+ 261 87 2 0.5564       17.72500001      16.97699999      10.29200001
+ 262 88 1 -1.1128      14.06900000      18.39900001      18.89700000
+ 263 88 2 0.5564       15.51300000      17.52300000      18.15500000
+ 264 88 2 0.5564       14.95800001      18.70900000      20.67300000
+ 265 89 1 -1.1128      14.09899999      15.48000000      25.51000001
+ 266 89 2 0.5564       13.69800000      16.87200001      26.93799999
+ 267 89 2 0.5564       12.56700000      15.37900000      24.44400000
+ 268 90 1 -1.1128      13.30900000      17.57400000      30.29200001
+ 269 90 2 0.5564       14.93700001      16.93399999      30.81000000
+ 270 90 2 0.5564       13.96900001      19.49400000      30.01200001
+ 271 91 1 -1.1128      18.37099999      23.25699999       0.92500000
+ 272 91 2 0.5564       19.47899999      23.48000000       2.32099999
+ 273 91 2 0.5564       19.08700001      24.32499999      -0.36900000
+ 274 92 1 -1.1128      12.10000000      21.72999999      11.35500000
+ 275 92 2 0.5564       13.14100001      22.28700000      12.74300001
+ 276 92 2 0.5564       13.46700001      22.23600000      10.24400000
+ 277 93 1 -1.1128      12.16300001      23.29000000      23.59699999
+ 278 93 2 0.5564       11.32400001      22.73600001      24.94900000
+ 279 93 2 0.5564       13.88200000      22.87200001      23.84000001
+ 280 94 1 -1.1128      20.17300001      26.76100001      22.62800000
+ 281 94 2 0.5564       20.20600001      26.53200001      20.79200000
+ 282 94 2 0.5564       21.55600000      25.74200000      23.38899999
+ 283 95 1 -1.1128      16.70099999      21.16500000      22.60500000
+ 284 95 2 0.5564       18.02800000      20.68600001      23.84799999
+ 285 95 2 0.5564       17.10400000      22.86599999      21.94900000
+ 286 96 1 -1.1128      11.39100000      26.46099999      33.70499999
+ 287 96 2 0.5564        9.84099999      27.19199999      34.04800001
+ 288 96 2 0.5564       11.77599999      25.53999999      35.24300000
+ 289 97 1 -1.1128       9.89799999      25.98900000       4.55300001
+ 290 97 2 0.5564        8.90199999      26.13099999       6.03900000
+ 291 97 2 0.5564       10.28700000      27.80600000       4.37600000
+ 292 98 1 -1.1128      14.30800000      26.96000000      10.87699999
+ 293 98 2 0.5564       15.30200000      27.40500000      12.17300001
+ 294 98 2 0.5564       15.46300000      26.15100000       9.63299999
+ 295 99 1 -1.1128      13.43300000      22.96000000      16.90400000
+ 296 99 2 0.5564       13.40900000      24.13099999      18.13200000
+ 297 99 2 0.5564       13.62400000      21.19100001      17.52000000
+ 298 100 1 -1.1128      16.40900000      26.76800001      26.87500000
+ 299 100 2 0.5564       17.58999999      26.98700001      25.43100000
+ 300 100 2 0.5564       14.75099999      27.70300000      26.23000000
+ 301 101 1 -1.1128      14.40500000      22.73299999      29.89200000
+ 302 101 2 0.5564       15.42300000      23.07900000      28.49400000
+ 303 101 2 0.5564       12.82600001      23.25900000      29.41600000
+ 304 102 1 -1.1128       6.90500001      29.40800000       0.74900000
+ 305 102 2 0.5564        8.42800001      30.48300000       1.56700000
+ 306 102 2 0.5564        6.35300001      30.81400000      -0.44400000
+ 307 103 1 -1.1128       9.18899999      34.15900001       6.50900000
+ 308 103 2 0.5564       10.19800000      34.19300000       8.00199999
+ 309 103 2 0.5564        9.89000001      35.69200000       5.78500000
+ 310 104 1 -1.1128      14.25600001      32.31600000       9.36900000
+ 311 104 2 0.5564       15.73299999      32.86700000       9.48599999
+ 312 104 2 0.5564       14.75400001      30.67000000      10.09000000
+ 313 105 1 -1.1128      14.71400000      30.84099999      16.51600000
+ 314 105 2 0.5564       13.74799999      29.55099999      17.27900000
+ 315 105 2 0.5564       13.21800000      31.93300001      16.61400001
+ 316 106 1 -1.1128      18.40900000      33.64100000      20.61100001
+ 317 106 2 0.5564       19.60099999      32.27400001      21.11500000
+ 318 106 2 0.5564       17.36000001      32.65500000      19.51799999
+ 319 107 1 -1.1128      16.06200001      28.63800000      32.20700000
+ 320 107 2 0.5564       14.64800000      27.95800001      33.25299999
+ 321 107 2 0.5564       15.75200000      28.01400000      30.52199999
+ 322 108 1 -1.1128      16.20000000      30.89499999       1.47300000
+ 323 108 2 0.5564       16.62599999      29.96800000      -0.13000001
+ 324 108 2 0.5564       17.16699999      29.83300001       2.92699999
+ 325 109 1 -1.1128      20.27799999       3.52899999       6.04800001
+ 326 109 2 0.5564       20.97699999       3.61100001       4.57500001
+ 327 109 2 0.5564       21.31200000       4.51300000       7.25100000
+ 328 110 1 -1.1128      23.07900000       5.77800000      10.40800000
+ 329 110 2 0.5564       24.65000001       6.25900000      10.83800000
+ 330 110 2 0.5564       22.34200001       7.60900000      10.17799999
+ 331 111 1 -1.1128      19.58100000       2.03099999      12.10999999
+ 332 111 2 0.5564       19.03900000       1.08200000      10.44000000
+ 333 111 2 0.5564       21.14100001       2.99100001      11.85100001
+ 334 112 1 -1.1128      22.00500001       3.22300000      23.17799999
+ 335 112 2 0.5564       21.42899999       4.09000000      24.55399999
+ 336 112 2 0.5564       20.65400001       1.79099999      22.71100001
+ 337 113 1 -1.1128      16.63000000       6.42200000      23.79200000
+ 338 113 2 0.5564       16.21900000       4.80400001      24.40600001
+ 339 113 2 0.5564       17.06600001       7.12799999      25.28199999
+ 340 114 1 -1.1128      21.67599999       5.56400001      28.15800000
+ 341 114 2 0.5564       20.65799999       6.71700000      29.18499999
+ 342 114 2 0.5564       23.41300000       5.82800000      28.99600000
+ 343 115 1 -1.1128      15.25699999       5.26500000       5.62599999
+ 344 115 2 0.5564       16.91400000       4.51900000       5.48999999
+ 345 115 2 0.5564       15.14400000       6.15000000       6.97200000
+ 346 116 1 -1.1128      20.13700000      11.08200000      10.43700000
+ 347 116 2 0.5564       20.02100000      10.94700000       8.73299999
+ 348 116 2 0.5564       21.02500000      12.55500000      10.85300000
+ 349 117 1 -1.1128      23.08900000      14.62700000      12.43700000
+ 350 117 2 0.5564       24.71600000      15.25400000      12.73600001
+ 351 117 2 0.5564       23.28400000      13.22799999      13.65300000
+ 352 118 1 -1.1128      24.08300000      12.64900000      22.56600000
+ 353 118 2 0.5564       22.39700000      12.66300000      23.04199999
+ 354 118 2 0.5564       24.90100001      13.85100001      23.56499999
+ 355 119 1 -1.1128      17.86500001       7.90899999      30.03600000
+ 356 119 2 0.5564       17.50900000       8.04499999      31.98200000
+ 357 119 2 0.5564       18.07800000       9.58200001      29.31799999
+ 358 120 1 -1.1128      18.82400000       8.48599999       0.10400000
+ 359 120 2 0.5564       19.99700000      10.19100001      -0.05700000
+ 360 120 2 0.5564       17.07700001       8.99800001       0.77900001
+ 361 121 1 -1.1128      20.12200000       9.14300000       5.34299999
+ 362 121 2 0.5564       19.37300000       8.81899999       3.82100000
+ 363 121 2 0.5564       21.99800001       8.77599999       5.12799999
+ 364 122 1 -1.1128      16.41300000      14.45900000       5.85499999
+ 365 122 2 0.5564       15.53599999      13.00700000       5.23899999
+ 366 122 2 0.5564       16.00599999      14.72500001       7.73699999
+ 367 123 1 -1.1128      17.56099999      15.06600001      15.65400001
+ 368 123 2 0.5564       17.57500001      13.39800000      16.05500001
+ 369 123 2 0.5564       18.97800000      15.82800000      16.39999999
+ 370 124 1 -1.1128      26.37400001      17.04700000      24.81700000
+ 371 124 2 0.5564       27.98300000      17.09800001      25.63200001
+ 372 124 2 0.5564       25.62900001      18.75099999      24.91900001
+ 373 125 1 -1.1128      19.78400000      12.96000000      28.70600000
+ 374 125 2 0.5564       21.66199999      13.05500001      28.87100000
+ 375 125 2 0.5564       19.54500000      14.06999999      27.14300000
+ 376 126 1 -1.1128      17.89099999      16.73299999      32.49900000
+ 377 126 2 0.5564       18.32700000      15.24000000      31.27700001
+ 378 126 2 0.5564       18.63299999      18.33500001      31.69300001
+ 379 127 1 -1.1128      23.73299999      23.02399999       1.66300000
+ 380 127 2 0.5564       24.80000000      24.05199999       2.77599999
+ 381 127 2 0.5564       24.69300001      22.61800001       0.19800000
+ 382 128 1 -1.1128      20.78900000      18.44000000       9.44299999
+ 383 128 2 0.5564       20.76599999      17.25699999       7.88100000
+ 384 128 2 0.5564       21.89600000      17.34500000      10.38500001
+ 385 129 1 -1.1128      21.57400000      17.49299999      17.83800000
+ 386 129 2 0.5564       20.59699999      18.95500001      17.21800000
+ 387 129 2 0.5564       22.53800000      16.87400000      16.25100000
+ 388 130 1 -1.1128      19.16800000      14.74799999      24.13099999
+ 389 130 2 0.5564       19.71100001      16.39000000      23.71199999
+ 390 130 2 0.5564       17.42899999      14.69500000      24.40300001
+ 391 131 1 -1.1128      22.14899999      20.19800000      24.97699999
+ 392 131 2 0.5564       21.63900001      20.92400000      26.48599999
+ 393 131 2 0.5564       22.65600000      21.65700001      24.41099999
+ 394 132 1 -1.1128      20.56499999      20.79200000      29.60000001
+ 395 132 2 0.5564       22.26399999      20.40900000      30.21399999
+ 396 132 2 0.5564       20.54800000      22.40800000      30.59699999
+ 397 133 1 -1.1128      20.80200000      26.54699999       9.61499999
+ 398 133 2 0.5564       20.09899999      27.98399999       8.33800001
+ 399 133 2 0.5564       21.27700001      27.53900001      11.32499999
+ 400 134 1 -1.1128      16.28300000      23.58900001       7.77900001
+ 401 134 2 0.5564       16.09300000      21.97300001       6.71199999
+ 402 134 2 0.5564       17.90100001      22.97100000       8.15400000
+ 403 135 1 -1.1128      18.46900000      29.79799999      13.56800001
+ 404 135 2 0.5564       19.71199999      31.21600000      13.50600000
+ 405 135 2 0.5564       16.87200001      30.34299999      14.39600001
+ 406 136 1 -1.1128      18.79000001      21.71199999      16.06000000
+ 407 136 2 0.5564       19.87800000      23.09000000      16.48500001
+ 408 136 2 0.5564       17.20100000      22.32600000      15.81899999
+ 409 137 1 -1.1128      21.74700001      26.08400001      16.34900001
+ 410 137 2 0.5564       20.78300001      27.02100000      15.29999999
+ 411 137 2 0.5564       22.70499999      27.32799999      17.20600001
+ 412 138 1 -1.1128      20.76899999      26.21100000      32.05000000
+ 413 138 2 0.5564       21.48800000      27.40399999      33.32799999
+ 414 138 2 0.5564       18.98900000      26.71000000      32.14500001
+ 415 139 1 -1.1128      19.82000000      29.18100001       5.55900000
+ 416 139 2 0.5564       20.99100001      29.50900000       4.10900001
+ 417 139 2 0.5564       19.43100000      31.01800000       6.22099999
+ 418 140 1 -1.1128      19.24000000      33.86700000       7.99300000
+ 419 140 2 0.5564       19.10700000      35.03900000       6.60399999
+ 420 140 2 0.5564       20.69700001      33.67100000       9.06299999
+ 421 141 1 -1.1128      22.51099999      34.97600001      15.79300000
+ 422 141 2 0.5564       23.71600000      36.16300001      16.60300000
+ 423 141 2 0.5564       21.69900000      36.15000000      14.46700001
+ 424 142 1 -1.1128      22.62199999      30.28400000      19.06900000
+ 425 142 2 0.5564       22.04899999      31.35100000      17.72500001
+ 426 142 2 0.5564       24.41099999      30.77299999      19.57599999
+ 427 143 1 -1.1128      18.63900001      33.61100001      28.36900000
+ 428 143 2 0.5564       18.22600000      32.15900001      29.10300000
+ 429 143 2 0.5564       19.90600000      33.00800000      27.15800000
+ 430 144 1 -1.1128      22.52000000       1.32499999      31.92600001
+ 431 144 2 0.5564       22.80300000       2.66800001      30.79600000
+ 432 144 2 0.5564       21.04499999       0.42499999      31.12200000
+ 433 145 1 -1.1128      21.75400001       3.78900000       1.15900001
+ 434 145 2 0.5564       22.08499999       2.78500000      -0.18000000
+ 435 145 2 0.5564       20.85000000       5.17500000       0.61000000
+ 436 146 1 -1.1128      28.45699999       5.53900001      12.13300000
+ 437 146 2 0.5564       29.48900001       4.39000000      11.18200000
+ 438 146 2 0.5564       29.16100000       7.13099999      12.58700000
+ 439 147 1 -1.1128      22.49500000       5.96599999      17.32400001
+ 440 147 2 0.5564       24.37700000       5.37900000      17.39299999
+ 441 147 2 0.5564       21.90600000       5.49100000      18.85700000
+ 442 148 1 -1.1128      28.12799999       3.30400000      22.28700000
+ 443 148 2 0.5564       28.12300001       2.99899999      20.49100000
+ 444 148 2 0.5564       26.53299999       3.35500000      22.87600001
+ 445 149 1 -1.1128      28.37800001      10.45500000      27.26600000
+ 446 149 2 0.5564       30.01900001      10.29200001      28.05100000
+ 447 149 2 0.5564       28.63500000      10.03900000      25.46300000
+ 448 150 1 -1.1128      27.03099999       8.35300001      34.80600000
+ 449 150 2 0.5564       26.11600001       9.98399999      34.57100001
+ 450 150 2 0.5564       28.68500000       8.95100001      34.73900000
+ 451 151 1 -1.1128      24.95100001       8.15999999       4.45399999
+ 452 151 2 0.5564       25.93000001       9.61600000       5.15999999
+ 453 151 2 0.5564       25.94700000       7.99400001       2.72400000
+ 454 152 1 -1.1128      26.93700001      12.43599999       6.86900001
+ 455 152 2 0.5564       25.49200001      13.28400000       6.70799999
+ 456 152 2 0.5564       27.68900000      13.33199999       8.26600000
+ 457 153 1 -1.1128      23.36500000      11.21399999      16.93300001
+ 458 153 2 0.5564       22.24700000       9.74399999      16.78900000
+ 459 153 2 0.5564       23.26399999      12.03500000      18.53900001
+ 460 154 1 -1.1128      28.32099999       8.75900000      22.15800000
+ 461 154 2 0.5564       27.66199999       6.89499999      22.48200001
+ 462 154 2 0.5564       26.97100000       9.71000000      21.90199999
+ 463 155 1 -1.1128      27.07100000       6.10900001      29.55500000
+ 464 155 2 0.5564       27.59100000       7.66300000      28.85700000
+ 465 155 2 0.5564       27.30400000       6.32000001      31.26100000
+ 466 156 1 -1.1128      22.47400000      11.70400001      34.63999999
+ 467 156 2 0.5564       22.75200000      13.30400000      35.58400000
+ 468 156 2 0.5564       22.84000001      12.09000000      33.03000001
+ 469 157 1 -1.1128      21.65600000      14.97100000       5.61499999
+ 470 157 2 0.5564       21.68999999      15.86000000       3.97699999
+ 471 157 2 0.5564       19.96400000      14.22500000       5.77400000
+ 472 158 1 -1.1128      28.53900001      21.49200001       9.82000000
+ 473 158 2 0.5564       27.28800001      22.18100001       8.68800000
+ 474 158 2 0.5564       28.06500000      22.42000000      11.60200000
+ 475 159 1 -1.1128      28.36399999      16.01999999      11.10900001
+ 476 159 2 0.5564       30.03300000      16.64900000      12.08900000
+ 477 159 2 0.5564       28.45600000      17.44000000      10.08200000
+ 478 160 1 -1.1128       0.05400000      13.68600001      18.10300000
+ 479 160 2 0.5564       -1.71400000      12.92800000      18.84099999
+ 480 160 2 0.5564        1.00800000      12.42899999      17.38300000
+ 481 161 1 -1.1128      24.63600001      12.89400001      29.95700000
+ 482 161 2 0.5564       25.90600000      13.91400000      31.18300000
+ 483 161 2 0.5564       25.64100000      11.60900000      29.16200000
+ 484 162 1 -1.1128      21.54800000      17.25000000       0.74900000
+ 485 162 2 0.5564       21.84300000      19.02600000       0.90500001
+ 486 162 2 0.5564       20.38500001      16.71600000      -0.69700001
+ 487 163 1 -1.1128      26.09499999      27.27400001       4.52000000
+ 488 163 2 0.5564       27.88900000      26.45800000       4.50500000
+ 489 163 2 0.5564       25.64800000      26.96999999       6.16500000
+ 490 164 1 -1.1128      23.61000000      22.51499999       8.00800000
+ 491 164 2 0.5564       22.65300000      21.18700000       8.73900000
+ 492 164 2 0.5564       22.28600000      24.09499999       8.44400000
+ 493 165 1 -1.1128      27.35500000      18.92900000      18.18000000
+ 494 165 2 0.5564       27.20000000      20.34900001      17.15500000
+ 495 165 2 0.5564       25.57899999      18.32200000      18.77000000
+ 496 166 1 -1.1128      26.76500001      23.63299999      14.44400000
+ 497 166 2 0.5564       27.44100000      25.29800000      13.65099999
+ 498 166 2 0.5564       25.08600000      24.25600001      14.74900000
+ 499 167 1 -1.1128      31.47800001      20.76899999      20.98600000
+ 500 167 2 0.5564       30.44000000      22.50900000      21.13499999
+ 501 167 2 0.5564       30.56700000      19.65600000      20.04300000
+ 502 168 1 -1.1128      24.81199999      20.41200000      32.66800001
+ 503 168 2 0.5564       26.24199999      21.47800001      31.87400000
+ 504 168 2 0.5564       25.78699999      19.02300001      33.15800000
+ 505 169 1 -1.1128      22.10500001      29.07600000       0.92800000
+ 506 169 2 0.5564       23.29599999      27.92299999       1.73900000
+ 507 169 2 0.5564       22.62300000      30.99400001       0.88200000
+ 508 170 1 -1.1128      29.57199999      31.25600001       8.62599999
+ 509 170 2 0.5564       30.79500000      30.20299999       7.73600001
+ 510 170 2 0.5564       28.27700001      31.51900000       7.25999999
+ 511 171 1 -1.1128      31.81700000      34.84300000      18.28300000
+ 512 171 2 0.5564       32.43800000      34.38899999      16.47400000
+ 513 171 2 0.5564       32.74300001      36.42200000      18.34100000
+ 514 172 1 -1.1128      27.91500001      25.60099999      19.03300000
+ 515 172 2 0.5564       29.35800000      26.56099999      19.19000000
+ 516 172 2 0.5564       28.14800001      24.42899999      17.53000000
+ 517 173 1 -1.1128      24.54800000      24.65400001      24.02500000
+ 518 173 2 0.5564       25.52800001      25.63500000      22.82400000
+ 519 173 2 0.5564       25.29999999      25.20000000      25.64500000
+ 520 174 1 -1.1128      28.53999999      22.92200000      30.37000000
+ 521 174 2 0.5564       27.41399999      24.09600000      29.78100000
+ 522 174 2 0.5564       29.67400000      23.91400000      31.87299999
+ 523 175 1 -1.1128      24.96900001      33.62300000       1.01400000
+ 524 175 2 0.5564       26.52100001      33.05800000       1.51799999
+ 525 175 2 0.5564       24.99000000      34.32200000      -0.68299999
+ 526 176 1 -1.1128      23.07500000      32.17099999      11.32400001
+ 527 176 2 0.5564       23.31600000      32.77500000      13.09700000
+ 528 176 2 0.5564       24.46000001      33.20299999      10.66199999
+ 529 177 1 -1.1128      27.49699999       2.73600001      17.22400001
+ 530 177 2 0.5564       28.39700000       3.41500000      15.71500001
+ 531 177 2 0.5564       28.23400001       1.23300000      17.41200000
+ 532 178 1 -1.1128      26.36900000      33.06000000      22.07700001
+ 533 178 2 0.5564       26.17000001      34.74600000      22.26399999
+ 534 178 2 0.5564       27.59200000      32.40399999      23.32099999
+ 535 179 1 -1.1128      30.22099999      30.95000000      25.84300000
+ 536 179 2 0.5564       30.30500000      29.03799999      26.20800000
+ 537 179 2 0.5564       30.36300001      31.97900000      27.41399999
+ 538 180 1 -1.1128      24.97300001      26.73200000      28.60700001
+ 539 180 2 0.5564       25.38500001      28.36900000      29.24800000
+ 540 180 2 0.5564       23.33000000      26.59699999      29.23400001
+ 541 181 1 -1.1128      32.16500000       4.85700000       2.25800000
+ 542 181 2 0.5564       32.41700001       6.19500001       1.15700000
+ 543 181 2 0.5564       32.61499999       3.72700000       1.11200000
+ 544 182 1 -1.1128      28.06699999       3.53299999       5.21699999
+ 545 182 2 0.5564       26.96000000       4.44699999       4.15800000
+ 546 182 2 0.5564       29.87500000       3.86300000       4.44800000
+ 547 183 1 -1.1128      33.27900000       2.78200000      13.02800000
+ 548 183 2 0.5564       33.70799999       3.95500001      11.81700000
+ 549 183 2 0.5564       33.65600000       3.54500000      14.63100000
+ 550 184 1 -1.1128      34.27799999       4.94400001      17.49200001
+ 551 184 2 0.5564       33.43800000       6.56300000      17.87600001
+ 552 184 2 0.5564       34.90600000       4.45200000      18.99499999
+ 553 185 1 -1.1128      32.36300001       1.90800001      26.09199999
+ 554 185 2 0.5564       31.94099999       1.68299999      24.26800000
+ 555 185 2 0.5564       33.85000000       1.39000000      26.90400000
+ 556 186 1 -1.1128      27.98200000       0.41799999      28.24100000
+ 557 186 2 0.5564       27.51600000       2.08000001      28.30900000
+ 558 186 2 0.5564       29.59300001       0.17600000      27.29900001
+ 559 187 1 -1.1128      28.84500000      14.67200001       2.72400000
+ 560 187 2 0.5564       27.96299999      13.93000001       4.13900000
+ 561 187 2 0.5564       30.38599999      15.71400000       3.37900000
+ 562 188 1 -1.1128      28.08300000      10.61800001      14.29800000
+ 563 188 2 0.5564       28.62300000      12.15999999      13.29300000
+ 564 188 2 0.5564       26.48599999      11.01500000      15.37900000
+ 565 189 1 -1.1128      33.86700000      10.54500000      13.30600001
+ 566 189 2 0.5564       35.16500000       9.61200000      13.81000000
+ 567 189 2 0.5564       33.61499999      10.27000001      11.51300000
+ 568 190 1 -1.1128      31.79000001       9.69600000      18.22300000
+ 569 190 2 0.5564       30.48400000       9.33400000      19.42100001
+ 570 190 2 0.5564       30.83399999      10.09600000      16.92900000
+ 571 191 1 -1.1128      30.14100001      15.00599999      21.53200001
+ 572 191 2 0.5564       28.56499999      15.59399999      22.09899999
+ 573 191 2 0.5564       30.94200000      14.25299999      23.07700001
+ 574 192 1 -1.1128      32.79799999      10.73200000      30.67999999
+ 575 192 2 0.5564       34.07300001       9.52800001      30.79900000
+ 576 192 2 0.5564       32.99100001      11.51200000      28.98300000
+ 577 193 1 -1.1128      33.65200000      16.26500000       5.08600000
+ 578 193 2 0.5564       35.39900001      16.23899999       4.72999999
+ 579 193 2 0.5564       33.50300001      17.93900000       5.63100000
+ 580 194 1 -1.1128      31.94700000      10.79900000       7.94300000
+ 581 194 2 0.5564       29.89400001      10.54900000       7.61899999
+ 582 194 2 0.5564       32.27099999      12.41399999       7.07500000
+ 583 195 1 -1.1128       0.32900000      15.51600000      11.74600000
+ 584 195 2 0.5564       -0.44600001      14.24900001      12.93900000
+ 585 195 2 0.5564       -0.68500000      17.01800000      11.93500000
+ 586 196 1 -1.1128       4.26200000      19.16500000      14.30800000
+ 587 196 2 0.5564        3.57899999      17.69100000      14.91999999
+ 588 196 2 0.5564        5.72299999      19.18300000      15.20400000
+ 589 197 1 -1.1128      32.99499999      13.54600001      25.94800001
+ 590 197 2 0.5564       32.16699999      15.06000000      26.78699999
+ 591 197 2 0.5564       34.42499999      13.80000000      25.00700000
+ 592 198 1 -1.1128       1.77299999      13.52400000      34.03700001
+ 593 198 2 0.5564        0.22700001      14.40900000      33.44600001
+ 594 198 2 0.5564        2.16699999      14.67000000      35.51099999
+ 595 199 1 -1.1128      33.02900000      20.52899999       7.24700000
+ 596 199 2 0.5564       34.38800000      21.41399999       8.00300000
+ 597 199 2 0.5564       31.45100000      20.83100000       8.18200000
+ 598 200 1 -1.1128       2.03700001      24.25000000      10.25100000
+ 599 200 2 0.5564        3.74300001      25.00800000       9.87600001
+ 600 200 2 0.5564        1.89400001      25.04300000      11.90300000
+ 601 201 1 -1.1128      32.75300000      19.25900000      13.97600001
+ 602 201 2 0.5564       32.79200000      20.88600000      13.79200000
+ 603 201 2 0.5564       34.33400000      18.79900000      14.97600001
+ 604 202 1 -1.1128       0.39600001      18.67300000      18.69900000
+ 605 202 2 0.5564       -1.21100000      18.95000000      19.12700001
+ 606 202 2 0.5564        0.46900000      16.97699999      18.43599999
+ 607 203 1 -1.1128      30.85499999      18.37000000      27.95899999
+ 608 203 2 0.5564       29.75900000      19.68100000      28.68999999
+ 609 203 2 0.5564       32.10300000      19.47700000      26.76300000
+ 610 204 1 -1.1128      27.72299999      15.99200000      33.09100001
+ 611 204 2 0.5564       29.39000000      16.42300000      32.19199999
+ 612 204 2 0.5564       27.80100001      15.85899999      34.80400001
+ 613 205 1 -1.1128      31.06800000      27.89499999       3.34800000
+ 614 205 2 0.5564       32.51700000      27.82500000       4.61000000
+ 615 205 2 0.5564       31.52899999      29.45900000       2.32400001
+ 616 206 1 -1.1128      35.03900000      28.00800000       6.66300000
+ 617 206 2 0.5564       35.96599999      26.93399999       7.68299999
+ 618 206 2 0.5564       36.05500001      28.33600000       5.33600000
+ 619 207 1 -1.1128      29.35600001      28.19599999      13.02500000
+ 620 207 2 0.5564       29.20999999      29.33500001      14.58900001
+ 621 207 2 0.5564       28.87400000      29.62900001      11.86700000
+ 622 208 1 -1.1128      32.38599999      28.43400000      18.96100000
+ 623 208 2 0.5564       33.36799999      28.57400000      20.41099999
+ 624 208 2 0.5564       33.41000001      27.40600001      17.94900000
+ 625 209 1 -1.1128      30.89799999      25.39000000      25.79900000
+ 626 209 2 0.5564       32.36900000      25.91299999      24.58000000
+ 627 209 2 0.5564       31.31700001      24.07500000      27.02900000
+ 628 210 1 -1.1128      32.25900000      25.61100001      33.10400000
+ 629 210 2 0.5564       32.23800001      25.73600001      34.80600000
+ 630 210 2 0.5564       33.91999999      25.04199999      32.77500000
+ 631 211 1 -1.1128      30.29000000      32.64500000       1.34100000
+ 632 211 2 0.5564       29.94900000      32.79300000      -0.43000000
+ 633 211 2 0.5564       31.76199999      33.34000000       1.84700001
+ 634 212 1 -1.1128      25.53599999      34.23499999       6.46900000
+ 635 212 2 0.5564       25.71600000      36.05900001       6.65099999
+ 636 212 2 0.5564       25.28300000      33.86599999       4.89499999
+ 637 213 1 -1.1128      31.67400000      33.16100000      13.10599999
+ 638 213 2 0.5564       31.79300000      34.86300000      13.28100001
+ 639 213 2 0.5564       30.42499999      32.92800000      11.78300001
+ 640 214 1 -1.1128      33.84400001      32.66800001      22.29599999
+ 641 214 2 0.5564       32.75000000      32.23400001      23.52400000
+ 642 214 2 0.5564       32.91700000      32.87500000      20.73600001
+ 643 215 1 -1.1128      31.60300000      30.54200000      30.80499999
+ 644 215 2 0.5564       33.45100000      30.80400001      30.46799999
+ 645 215 2 0.5564       31.57500001      28.81599999      31.75600000
+ 646 216 1 -1.1128      26.29500001      31.23499999      30.59900000
+ 647 216 2 0.5564       27.83399999      30.51499999      30.60700001
+ 648 216 2 0.5564       26.36200000      32.91999999      29.85600000
+
+Bonds
+
+ 1 1 1 2
+ 2 1 1 3
+ 3 1 4 5
+ 4 1 4 6
+ 5 1 7 8
+ 6 1 7 9
+ 7 1 10 11
+ 8 1 10 12
+ 9 1 13 14
+ 10 1 13 15
+ 11 1 16 17
+ 12 1 16 18
+ 13 1 19 20
+ 14 1 19 21
+ 15 1 22 23
+ 16 1 22 24
+ 17 1 25 26
+ 18 1 25 27
+ 19 1 28 29
+ 20 1 28 30
+ 21 1 31 32
+ 22 1 31 33
+ 23 1 34 35
+ 24 1 34 36
+ 25 1 37 38
+ 26 1 37 39
+ 27 1 40 41
+ 28 1 40 42
+ 29 1 43 44
+ 30 1 43 45
+ 31 1 46 47
+ 32 1 46 48
+ 33 1 49 50
+ 34 1 49 51
+ 35 1 52 53
+ 36 1 52 54
+ 37 1 55 56
+ 38 1 55 57
+ 39 1 58 59
+ 40 1 58 60
+ 41 1 61 62
+ 42 1 61 63
+ 43 1 64 65
+ 44 1 64 66
+ 45 1 67 68
+ 46 1 67 69
+ 47 1 70 71
+ 48 1 70 72
+ 49 1 73 74
+ 50 1 73 75
+ 51 1 76 77
+ 52 1 76 78
+ 53 1 79 80
+ 54 1 79 81
+ 55 1 82 83
+ 56 1 82 84
+ 57 1 85 86
+ 58 1 85 87
+ 59 1 88 89
+ 60 1 88 90
+ 61 1 91 92
+ 62 1 91 93
+ 63 1 94 95
+ 64 1 94 96
+ 65 1 97 98
+ 66 1 97 99
+ 67 1 100 101
+ 68 1 100 102
+ 69 1 103 104
+ 70 1 103 105
+ 71 1 106 107
+ 72 1 106 108
+ 73 1 109 110
+ 74 1 109 111
+ 75 1 112 113
+ 76 1 112 114
+ 77 1 115 116
+ 78 1 115 117
+ 79 1 118 119
+ 80 1 118 120
+ 81 1 121 122
+ 82 1 121 123
+ 83 1 124 125
+ 84 1 124 126
+ 85 1 127 128
+ 86 1 127 129
+ 87 1 130 131
+ 88 1 130 132
+ 89 1 133 134
+ 90 1 133 135
+ 91 1 136 137
+ 92 1 136 138
+ 93 1 139 140
+ 94 1 139 141
+ 95 1 142 143
+ 96 1 142 144
+ 97 1 145 146
+ 98 1 145 147
+ 99 1 148 149
+ 100 1 148 150
+ 101 1 151 152
+ 102 1 151 153
+ 103 1 154 155
+ 104 1 154 156
+ 105 1 157 158
+ 106 1 157 159
+ 107 1 160 161
+ 108 1 160 162
+ 109 1 163 164
+ 110 1 163 165
+ 111 1 166 167
+ 112 1 166 168
+ 113 1 169 170
+ 114 1 169 171
+ 115 1 172 173
+ 116 1 172 174
+ 117 1 175 176
+ 118 1 175 177
+ 119 1 178 179
+ 120 1 178 180
+ 121 1 181 182
+ 122 1 181 183
+ 123 1 184 185
+ 124 1 184 186
+ 125 1 187 188
+ 126 1 187 189
+ 127 1 190 191
+ 128 1 190 192
+ 129 1 193 194
+ 130 1 193 195
+ 131 1 196 197
+ 132 1 196 198
+ 133 1 199 200
+ 134 1 199 201
+ 135 1 202 203
+ 136 1 202 204
+ 137 1 205 206
+ 138 1 205 207
+ 139 1 208 209
+ 140 1 208 210
+ 141 1 211 212
+ 142 1 211 213
+ 143 1 214 215
+ 144 1 214 216
+ 145 1 217 218
+ 146 1 217 219
+ 147 1 220 221
+ 148 1 220 222
+ 149 1 223 224
+ 150 1 223 225
+ 151 1 226 227
+ 152 1 226 228
+ 153 1 229 230
+ 154 1 229 231
+ 155 1 232 233
+ 156 1 232 234
+ 157 1 235 236
+ 158 1 235 237
+ 159 1 238 239
+ 160 1 238 240
+ 161 1 241 242
+ 162 1 241 243
+ 163 1 244 245
+ 164 1 244 246
+ 165 1 247 248
+ 166 1 247 249
+ 167 1 250 251
+ 168 1 250 252
+ 169 1 253 254
+ 170 1 253 255
+ 171 1 256 257
+ 172 1 256 258
+ 173 1 259 260
+ 174 1 259 261
+ 175 1 262 263
+ 176 1 262 264
+ 177 1 265 266
+ 178 1 265 267
+ 179 1 268 269
+ 180 1 268 270
+ 181 1 271 272
+ 182 1 271 273
+ 183 1 274 275
+ 184 1 274 276
+ 185 1 277 278
+ 186 1 277 279
+ 187 1 280 281
+ 188 1 280 282
+ 189 1 283 284
+ 190 1 283 285
+ 191 1 286 287
+ 192 1 286 288
+ 193 1 289 290
+ 194 1 289 291
+ 195 1 292 293
+ 196 1 292 294
+ 197 1 295 296
+ 198 1 295 297
+ 199 1 298 299
+ 200 1 298 300
+ 201 1 301 302
+ 202 1 301 303
+ 203 1 304 305
+ 204 1 304 306
+ 205 1 307 308
+ 206 1 307 309
+ 207 1 310 311
+ 208 1 310 312
+ 209 1 313 314
+ 210 1 313 315
+ 211 1 316 317
+ 212 1 316 318
+ 213 1 319 320
+ 214 1 319 321
+ 215 1 322 323
+ 216 1 322 324
+ 217 1 325 326
+ 218 1 325 327
+ 219 1 328 329
+ 220 1 328 330
+ 221 1 331 332
+ 222 1 331 333
+ 223 1 334 335
+ 224 1 334 336
+ 225 1 337 338
+ 226 1 337 339
+ 227 1 340 341
+ 228 1 340 342
+ 229 1 343 344
+ 230 1 343 345
+ 231 1 346 347
+ 232 1 346 348
+ 233 1 349 350
+ 234 1 349 351
+ 235 1 352 353
+ 236 1 352 354
+ 237 1 355 356
+ 238 1 355 357
+ 239 1 358 359
+ 240 1 358 360
+ 241 1 361 362
+ 242 1 361 363
+ 243 1 364 365
+ 244 1 364 366
+ 245 1 367 368
+ 246 1 367 369
+ 247 1 370 371
+ 248 1 370 372
+ 249 1 373 374
+ 250 1 373 375
+ 251 1 376 377
+ 252 1 376 378
+ 253 1 379 380
+ 254 1 379 381
+ 255 1 382 383
+ 256 1 382 384
+ 257 1 385 386
+ 258 1 385 387
+ 259 1 388 389
+ 260 1 388 390
+ 261 1 391 392
+ 262 1 391 393
+ 263 1 394 395
+ 264 1 394 396
+ 265 1 397 398
+ 266 1 397 399
+ 267 1 400 401
+ 268 1 400 402
+ 269 1 403 404
+ 270 1 403 405
+ 271 1 406 407
+ 272 1 406 408
+ 273 1 409 410
+ 274 1 409 411
+ 275 1 412 413
+ 276 1 412 414
+ 277 1 415 416
+ 278 1 415 417
+ 279 1 418 419
+ 280 1 418 420
+ 281 1 421 422
+ 282 1 421 423
+ 283 1 424 425
+ 284 1 424 426
+ 285 1 427 428
+ 286 1 427 429
+ 287 1 430 431
+ 288 1 430 432
+ 289 1 433 434
+ 290 1 433 435
+ 291 1 436 437
+ 292 1 436 438
+ 293 1 439 440
+ 294 1 439 441
+ 295 1 442 443
+ 296 1 442 444
+ 297 1 445 446
+ 298 1 445 447
+ 299 1 448 449
+ 300 1 448 450
+ 301 1 451 452
+ 302 1 451 453
+ 303 1 454 455
+ 304 1 454 456
+ 305 1 457 458
+ 306 1 457 459
+ 307 1 460 461
+ 308 1 460 462
+ 309 1 463 464
+ 310 1 463 465
+ 311 1 466 467
+ 312 1 466 468
+ 313 1 469 470
+ 314 1 469 471
+ 315 1 472 473
+ 316 1 472 474
+ 317 1 475 476
+ 318 1 475 477
+ 319 1 478 479
+ 320 1 478 480
+ 321 1 481 482
+ 322 1 481 483
+ 323 1 484 485
+ 324 1 484 486
+ 325 1 487 488
+ 326 1 487 489
+ 327 1 490 491
+ 328 1 490 492
+ 329 1 493 494
+ 330 1 493 495
+ 331 1 496 497
+ 332 1 496 498
+ 333 1 499 500
+ 334 1 499 501
+ 335 1 502 503
+ 336 1 502 504
+ 337 1 505 506
+ 338 1 505 507
+ 339 1 508 509
+ 340 1 508 510
+ 341 1 511 512
+ 342 1 511 513
+ 343 1 514 515
+ 344 1 514 516
+ 345 1 517 518
+ 346 1 517 519
+ 347 1 520 521
+ 348 1 520 522
+ 349 1 523 524
+ 350 1 523 525
+ 351 1 526 527
+ 352 1 526 528
+ 353 1 529 530
+ 354 1 529 531
+ 355 1 532 533
+ 356 1 532 534
+ 357 1 535 536
+ 358 1 535 537
+ 359 1 538 539
+ 360 1 538 540
+ 361 1 541 542
+ 362 1 541 543
+ 363 1 544 545
+ 364 1 544 546
+ 365 1 547 548
+ 366 1 547 549
+ 367 1 550 551
+ 368 1 550 552
+ 369 1 553 554
+ 370 1 553 555
+ 371 1 556 557
+ 372 1 556 558
+ 373 1 559 560
+ 374 1 559 561
+ 375 1 562 563
+ 376 1 562 564
+ 377 1 565 566
+ 378 1 565 567
+ 379 1 568 569
+ 380 1 568 570
+ 381 1 571 572
+ 382 1 571 573
+ 383 1 574 575
+ 384 1 574 576
+ 385 1 577 578
+ 386 1 577 579
+ 387 1 580 581
+ 388 1 580 582
+ 389 1 583 584
+ 390 1 583 585
+ 391 1 586 587
+ 392 1 586 588
+ 393 1 589 590
+ 394 1 589 591
+ 395 1 592 593
+ 396 1 592 594
+ 397 1 595 596
+ 398 1 595 597
+ 399 1 598 599
+ 400 1 598 600
+ 401 1 601 602
+ 402 1 601 603
+ 403 1 604 605
+ 404 1 604 606
+ 405 1 607 608
+ 406 1 607 609
+ 407 1 610 611
+ 408 1 610 612
+ 409 1 613 614
+ 410 1 613 615
+ 411 1 616 617
+ 412 1 616 618
+ 413 1 619 620
+ 414 1 619 621
+ 415 1 622 623
+ 416 1 622 624
+ 417 1 625 626
+ 418 1 625 627
+ 419 1 628 629
+ 420 1 628 630
+ 421 1 631 632
+ 422 1 631 633
+ 423 1 634 635
+ 424 1 634 636
+ 425 1 637 638
+ 426 1 637 639
+ 427 1 640 641
+ 428 1 640 642
+ 429 1 643 644
+ 430 1 643 645
+ 431 1 646 647
+ 432 1 646 648
+
+Angles
+
+ 1 1 2 1 3
+ 2 1 5 4 6
+ 3 1 8 7 9
+ 4 1 11 10 12
+ 5 1 14 13 15
+ 6 1 17 16 18
+ 7 1 20 19 21
+ 8 1 23 22 24
+ 9 1 26 25 27
+ 10 1 29 28 30
+ 11 1 32 31 33
+ 12 1 35 34 36
+ 13 1 38 37 39
+ 14 1 41 40 42
+ 15 1 44 43 45
+ 16 1 47 46 48
+ 17 1 50 49 51
+ 18 1 53 52 54
+ 19 1 56 55 57
+ 20 1 59 58 60
+ 21 1 62 61 63
+ 22 1 65 64 66
+ 23 1 68 67 69
+ 24 1 71 70 72
+ 25 1 74 73 75
+ 26 1 77 76 78
+ 27 1 80 79 81
+ 28 1 83 82 84
+ 29 1 86 85 87
+ 30 1 89 88 90
+ 31 1 92 91 93
+ 32 1 95 94 96
+ 33 1 98 97 99
+ 34 1 101 100 102
+ 35 1 104 103 105
+ 36 1 107 106 108
+ 37 1 110 109 111
+ 38 1 113 112 114
+ 39 1 116 115 117
+ 40 1 119 118 120
+ 41 1 122 121 123
+ 42 1 125 124 126
+ 43 1 128 127 129
+ 44 1 131 130 132
+ 45 1 134 133 135
+ 46 1 137 136 138
+ 47 1 140 139 141
+ 48 1 143 142 144
+ 49 1 146 145 147
+ 50 1 149 148 150
+ 51 1 152 151 153
+ 52 1 155 154 156
+ 53 1 158 157 159
+ 54 1 161 160 162
+ 55 1 164 163 165
+ 56 1 167 166 168
+ 57 1 170 169 171
+ 58 1 173 172 174
+ 59 1 176 175 177
+ 60 1 179 178 180
+ 61 1 182 181 183
+ 62 1 185 184 186
+ 63 1 188 187 189
+ 64 1 191 190 192
+ 65 1 194 193 195
+ 66 1 197 196 198
+ 67 1 200 199 201
+ 68 1 203 202 204
+ 69 1 206 205 207
+ 70 1 209 208 210
+ 71 1 212 211 213
+ 72 1 215 214 216
+ 73 1 218 217 219
+ 74 1 221 220 222
+ 75 1 224 223 225
+ 76 1 227 226 228
+ 77 1 230 229 231
+ 78 1 233 232 234
+ 79 1 236 235 237
+ 80 1 239 238 240
+ 81 1 242 241 243
+ 82 1 245 244 246
+ 83 1 248 247 249
+ 84 1 251 250 252
+ 85 1 254 253 255
+ 86 1 257 256 258
+ 87 1 260 259 261
+ 88 1 263 262 264
+ 89 1 266 265 267
+ 90 1 269 268 270
+ 91 1 272 271 273
+ 92 1 275 274 276
+ 93 1 278 277 279
+ 94 1 281 280 282
+ 95 1 284 283 285
+ 96 1 287 286 288
+ 97 1 290 289 291
+ 98 1 293 292 294
+ 99 1 296 295 297
+ 100 1 299 298 300
+ 101 1 302 301 303
+ 102 1 305 304 306
+ 103 1 308 307 309
+ 104 1 311 310 312
+ 105 1 314 313 315
+ 106 1 317 316 318
+ 107 1 320 319 321
+ 108 1 323 322 324
+ 109 1 326 325 327
+ 110 1 329 328 330
+ 111 1 332 331 333
+ 112 1 335 334 336
+ 113 1 338 337 339
+ 114 1 341 340 342
+ 115 1 344 343 345
+ 116 1 347 346 348
+ 117 1 350 349 351
+ 118 1 353 352 354
+ 119 1 356 355 357
+ 120 1 359 358 360
+ 121 1 362 361 363
+ 122 1 365 364 366
+ 123 1 368 367 369
+ 124 1 371 370 372
+ 125 1 374 373 375
+ 126 1 377 376 378
+ 127 1 380 379 381
+ 128 1 383 382 384
+ 129 1 386 385 387
+ 130 1 389 388 390
+ 131 1 392 391 393
+ 132 1 395 394 396
+ 133 1 398 397 399
+ 134 1 401 400 402
+ 135 1 404 403 405
+ 136 1 407 406 408
+ 137 1 410 409 411
+ 138 1 413 412 414
+ 139 1 416 415 417
+ 140 1 419 418 420
+ 141 1 422 421 423
+ 142 1 425 424 426
+ 143 1 428 427 429
+ 144 1 431 430 432
+ 145 1 434 433 435
+ 146 1 437 436 438
+ 147 1 440 439 441
+ 148 1 443 442 444
+ 149 1 446 445 447
+ 150 1 449 448 450
+ 151 1 452 451 453
+ 152 1 455 454 456
+ 153 1 458 457 459
+ 154 1 461 460 462
+ 155 1 464 463 465
+ 156 1 467 466 468
+ 157 1 470 469 471
+ 158 1 473 472 474
+ 159 1 476 475 477
+ 160 1 479 478 480
+ 161 1 482 481 483
+ 162 1 485 484 486
+ 163 1 488 487 489
+ 164 1 491 490 492
+ 165 1 494 493 495
+ 166 1 497 496 498
+ 167 1 500 499 501
+ 168 1 503 502 504
+ 169 1 506 505 507
+ 170 1 509 508 510
+ 171 1 512 511 513
+ 172 1 515 514 516
+ 173 1 518 517 519
+ 174 1 521 520 522
+ 175 1 524 523 525
+ 176 1 527 526 528
+ 177 1 530 529 531
+ 178 1 533 532 534
+ 179 1 536 535 537
+ 180 1 539 538 540
+ 181 1 542 541 543
+ 182 1 545 544 546
+ 183 1 548 547 549
+ 184 1 551 550 552
+ 185 1 554 553 555
+ 186 1 557 556 558
+ 187 1 560 559 561
+ 188 1 563 562 564
+ 189 1 566 565 567
+ 190 1 569 568 570
+ 191 1 572 571 573
+ 192 1 575 574 576
+ 193 1 578 577 579
+ 194 1 581 580 582
+ 195 1 584 583 585
+ 196 1 587 586 588
+ 197 1 590 589 591
+ 198 1 593 592 594
+ 199 1 596 595 597
+ 200 1 599 598 600
+ 201 1 602 601 603
+ 202 1 605 604 606
+ 203 1 608 607 609
+ 204 1 611 610 612
+ 205 1 614 613 615
+ 206 1 617 616 618
+ 207 1 620 619 621
+ 208 1 623 622 624
+ 209 1 626 625 627
+ 210 1 629 628 630
+ 211 1 632 631 633
+ 212 1 635 634 636
+ 213 1 638 637 639
+ 214 1 641 640 642
+ 215 1 644 643 645
+ 216 1 647 646 648
diff --git a/tools/i-pi/examples/lammps/h2o-pimd/in.water b/tools/i-pi/examples/lammps/h2o-pimd/in.water
new file mode 100644
index 0000000000000000000000000000000000000000..d1d9048cc84d9c20486aef23dad38ee27444b643
--- /dev/null
+++ b/tools/i-pi/examples/lammps/h2o-pimd/in.water
@@ -0,0 +1,32 @@
+units		electron
+atom_style	full
+
+#pair_style	lj/cut/coul/long 17.01
+pair_style      lj/cut/tip4p/long 1 2 1 1 0.278072379 17.007
+#bond_style      harmonic
+bond_style      class2 
+angle_style     harmonic
+#kspace_style	pppm 0.0001
+kspace_style	pppm/tip4p 0.0001
+
+read_data	data.water
+pair_coeff  * * 0 0
+pair_coeff  1  1  0.000295147 5.96946
+
+neighbor	2.0 bin
+
+timestep	0.00025
+
+#velocity all create 298.0 2345187
+
+#thermo_style	multi
+#thermo		1
+
+#fix		1 all nvt temp 298.0 298.0 30.0 tchain 1
+#fix 1 all nve
+fix 1 all ipi no_rpc 32345 unix
+
+#dump		1 all xyz 25 dump.xyz
+
+run		100000000
+
diff --git a/tools/i-pi/examples/lammps/h2o-pimd/input.xml b/tools/i-pi/examples/lammps/h2o-pimd/input.xml
new file mode 100644
index 0000000000000000000000000000000000000000..36bcd38d2e9cad8cb6576d90da34313da88b81f6
--- /dev/null
+++ b/tools/i-pi/examples/lammps/h2o-pimd/input.xml
@@ -0,0 +1,24 @@
+<simulation>
+   <initialize nbeads='32'> 
+      <file mode='pdb'> water_298K.pdb </file>
+      <velocities mode="thermal" units='kelvin'> 298 </velocities>
+   </initialize>
+   <output prefix='no_rpc'>
+      <properties stride='1' filename='out'>  [ step, time{picosecond}, conserved, temperature{kelvin}, kinetic_cv, potential, pressure_cv{megapascal}] </properties>
+      <trajectory filename='pos' stride='20'> positions </trajectory>
+   </output>
+   <total_steps>500000</total_steps>
+   <prng><seed>32345</seed></prng>
+   <forces>
+      <socket mode='unix'>
+         <address>no_rpc</address>
+      </socket>
+   </forces>
+   <ensemble mode='nvt'>
+      <thermostat mode='svr'>
+         <tau units='femtosecond'>25</tau>
+      </thermostat>
+      <timestep units='femtosecond'> 0.25</timestep>
+      <temperature units='kelvin'>298</temperature>
+   </ensemble>
+</simulation>
diff --git a/tools/i-pi/examples/lammps/h2o-pimd/water_298K.pdb b/tools/i-pi/examples/lammps/h2o-pimd/water_298K.pdb
new file mode 100644
index 0000000000000000000000000000000000000000..e8509c868e9f7ece5e82b1ee19d58a269f5db829
--- /dev/null
+++ b/tools/i-pi/examples/lammps/h2o-pimd/water_298K.pdb
@@ -0,0 +1,650 @@
+CRYST   35.233   35.233   35.233  90.00  90.00  90.00 P 1          1
+ATOM      1    O   1     1       3.846   5.672   1.323  0.00  0.00            0
+ATOM      2    H   1     1       2.979   7.054   0.857  0.00  0.00            0
+ATOM      3    H   1     1       5.525   5.697   0.451  0.00  0.00            0
+ATOM      4    O   1     1      34.557  34.341   3.078  0.00  0.00            0
+ATOM      5    H   1     1      33.722  34.689   4.840  0.00  0.00            0
+ATOM      6    H   1     1      36.029  33.220   3.711  0.00  0.00            0
+ATOM      7    O   1     1       5.591   1.963  13.477  0.00  0.00            0
+ATOM      8    H   1     1       7.265   1.864  13.851  0.00  0.00            0
+ATOM      9    H   1     1       5.009   3.555  13.916  0.00  0.00            0
+ATOM     10    O   1     1       1.060   2.061  21.718  0.00  0.00            0
+ATOM     11    H   1     1       0.757   0.261  21.820  0.00  0.00            0
+ATOM     12    H   1     1       0.213   3.013  23.047  0.00  0.00            0
+ATOM     13    O   1     1       1.200   1.337  29.006  0.00  0.00            0
+ATOM     14    H   1     1       0.818   1.884  30.732  0.00  0.00            0
+ATOM     15    H   1     1       2.883   1.825  29.011  0.00  0.00            0
+ATOM     16    O   1     1       1.331   1.386  34.306  0.00  0.00            0
+ATOM     17    H   1     1       2.392   2.898  34.846  0.00  0.00            0
+ATOM     18    H   1     1       0.814   0.532  35.836  0.00  0.00            0
+ATOM     19    O   1     1      31.451  10.201   0.726  0.00  0.00            0
+ATOM     20    H   1     1      32.282  10.877  -0.750  0.00  0.00            0
+ATOM     21    H   1     1      30.920  11.594   1.677  0.00  0.00            0
+ATOM     22    O   1     1       0.836  10.808   4.298  0.00  0.00            0
+ATOM     23    H   1     1       0.305  10.643   2.793  0.00  0.00            0
+ATOM     24    H   1     1      -0.356  10.334   5.524  0.00  0.00            0
+ATOM     25    O   1     1      34.381   5.979   9.194  0.00  0.00            0
+ATOM     26    H   1     1      33.616   7.673   8.857  0.00  0.00            0
+ATOM     27    H   1     1      35.115   5.260   7.618  0.00  0.00            0
+ATOM     28    O   1     1      33.212   6.480  24.278  0.00  0.00            0
+ATOM     29    H   1     1      31.624   6.908  23.521  0.00  0.00            0
+ATOM     30    H   1     1      32.544   4.990  24.982  0.00  0.00            0
+ATOM     31    O   1     1       1.992   9.002  26.863  0.00  0.00            0
+ATOM     32    H   1     1       1.856  10.175  25.579  0.00  0.00            0
+ATOM     33    H   1     1       0.519   8.099  26.386  0.00  0.00            0
+ATOM     34    O   1     1       2.054   8.660  32.515  0.00  0.00            0
+ATOM     35    H   1     1       2.167   8.727  30.494  0.00  0.00            0
+ATOM     36    H   1     1       2.374  10.513  33.038  0.00  0.00            0
+ATOM     37    O   1     1       3.402  16.639   3.008  0.00  0.00            0
+ATOM     38    H   1     1       4.127  15.872   4.446  0.00  0.00            0
+ATOM     39    H   1     1       2.905  18.339   3.160  0.00  0.00            0
+ATOM     40    O   1     1       4.222  15.444   8.072  0.00  0.00            0
+ATOM     41    H   1     1       5.211  16.756   8.299  0.00  0.00            0
+ATOM     42    H   1     1       2.560  15.492   8.860  0.00  0.00            0
+ATOM     43    O   1     1       2.831   9.246  16.488  0.00  0.00            0
+ATOM     44    H   1     1       2.869   8.023  18.050  0.00  0.00            0
+ATOM     45    H   1     1       3.960   8.467  15.154  0.00  0.00            0
+ATOM     46    O   1     1       5.563   6.003  20.907  0.00  0.00            0
+ATOM     47    H   1     1       4.653   4.638  21.480  0.00  0.00            0
+ATOM     48    H   1     1       6.405   6.208  22.529  0.00  0.00            0
+ATOM     49    O   1     1       2.087  13.370  22.913  0.00  0.00            0
+ATOM     50    H   1     1       2.832  14.804  23.422  0.00  0.00            0
+ATOM     51    H   1     1       1.434  13.509  21.196  0.00  0.00            0
+ATOM     52    O   1     1       3.369  17.886  25.109  0.00  0.00            0
+ATOM     53    H   1     1       3.655  17.200  26.766  0.00  0.00            0
+ATOM     54    H   1     1       4.772  18.977  24.500  0.00  0.00            0
+ATOM     55    O   1     1      34.764  20.803   0.948  0.00  0.00            0
+ATOM     56    H   1     1      35.210  21.267   2.816  0.00  0.00            0
+ATOM     57    H   1     1      35.962  21.726   0.131  0.00  0.00            0
+ATOM     58    O   1     1       2.836  24.178  15.229  0.00  0.00            0
+ATOM     59    H   1     1       2.795  22.346  14.876  0.00  0.00            0
+ATOM     60    H   1     1       2.414  24.115  17.130  0.00  0.00            0
+ATOM     61    O   1     1      33.000  24.481  15.230  0.00  0.00            0
+ATOM     62    H   1     1      34.640  24.804  15.013  0.00  0.00            0
+ATOM     63    H   1     1      32.401  25.764  14.295  0.00  0.00            0
+ATOM     64    O   1     1       0.404  26.779  23.400  0.00  0.00            0
+ATOM     65    H   1     1       1.353  27.248  24.987  0.00  0.00            0
+ATOM     66    H   1     1       1.546  28.050  22.317  0.00  0.00            0
+ATOM     67    O   1     1      34.222  21.380  25.418  0.00  0.00            0
+ATOM     68    H   1     1      35.669  20.151  25.317  0.00  0.00            0
+ATOM     69    H   1     1      32.960  21.180  23.992  0.00  0.00            0
+ATOM     70    O   1     1      33.259  17.438  32.480  0.00  0.00            0
+ATOM     71    H   1     1      33.314  18.782  33.883  0.00  0.00            0
+ATOM     72    H   1     1      32.743  18.181  30.871  0.00  0.00            0
+ATOM     73    O   1     1       4.463  21.979   3.936  0.00  0.00            0
+ATOM     74    H   1     1       5.856  23.084   3.400  0.00  0.00            0
+ATOM     75    H   1     1       3.986  22.180   5.602  0.00  0.00            0
+ATOM     76    O   1     1       6.258  25.851   8.520  0.00  0.00            0
+ATOM     77    H   1     1       5.767  27.693   8.476  0.00  0.00            0
+ATOM     78    H   1     1       7.202  25.506  10.186  0.00  0.00            0
+ATOM     79    O   1     1       0.601  29.737  12.747  0.00  0.00            0
+ATOM     80    H   1     1      -0.685  30.842  12.350  0.00  0.00            0
+ATOM     81    H   1     1       1.336  30.716  14.031  0.00  0.00            0
+ATOM     82    O   1     1       7.563  28.191  24.333  0.00  0.00            0
+ATOM     83    H   1     1       9.201  28.828  24.684  0.00  0.00            0
+ATOM     84    H   1     1       7.381  27.621  22.799  0.00  0.00            0
+ATOM     85    O   1     1       3.653  27.109  27.772  0.00  0.00            0
+ATOM     86    H   1     1       5.126  27.015  26.772  0.00  0.00            0
+ATOM     87    H   1     1       3.031  28.756  27.698  0.00  0.00            0
+ATOM     88    O   1     1       2.596  23.991  32.476  0.00  0.00            0
+ATOM     89    H   1     1       2.879  24.791  30.859  0.00  0.00            0
+ATOM     90    H   1     1       4.003  22.913  32.701  0.00  0.00            0
+ATOM     91    O   1     1       3.083  31.317   3.644  0.00  0.00            0
+ATOM     92    H   1     1       4.133  30.589   2.539  0.00  0.00            0
+ATOM     93    H   1     1       4.218  32.173   5.037  0.00  0.00            0
+ATOM     94    O   1     1       4.661  30.555   9.368  0.00  0.00            0
+ATOM     95    H   1     1       3.184  29.843  10.132  0.00  0.00            0
+ATOM     96    H   1     1       4.358  32.448   9.126  0.00  0.00            0
+ATOM     97    O   1     1       3.465  32.537  15.778  0.00  0.00            0
+ATOM     98    H   1     1       5.072  31.819  15.903  0.00  0.00            0
+ATOM     99    H   1     1       4.055  34.257  15.284  0.00  0.00            0
+ATOM    100    O   1     1       4.215  29.153  20.317  0.00  0.00            0
+ATOM    101    H   1     1       3.658  30.176  18.842  0.00  0.00            0
+ATOM    102    H   1     1       4.959  30.291  21.449  0.00  0.00            0
+ATOM    103    O   1     1       1.126  31.333  28.768  0.00  0.00            0
+ATOM    104    H   1     1       2.395  31.124  29.925  0.00  0.00            0
+ATOM    105    H   1     1       0.768  33.092  28.898  0.00  0.00            0
+ATOM    106    O   1     1       4.881  32.616  32.302  0.00  0.00            0
+ATOM    107    H   1     1       6.588  32.911  31.725  0.00  0.00            0
+ATOM    108    H   1     1       4.486  34.037  33.249  0.00  0.00            0
+ATOM    109    O   1     1       8.962   5.556   0.151  0.00  0.00            0
+ATOM    110    H   1     1       9.652   6.991   0.859  0.00  0.00            0
+ATOM    111    H   1     1       9.173   4.477   1.645  0.00  0.00            0
+ATOM    112    O   1     1       1.833   3.518   5.679  0.00  0.00            0
+ATOM    113    H   1     1       2.889   2.731   6.788  0.00  0.00            0
+ATOM    114    H   1     1       2.789   4.187   4.147  0.00  0.00            0
+ATOM    115    O   1     1      10.510  34.726  13.073  0.00  0.00            0
+ATOM    116    H   1     1      11.920  34.118  11.919  0.00  0.00            0
+ATOM    117    H   1     1      11.295  34.968  14.741  0.00  0.00            0
+ATOM    118    O   1     1       7.212   0.042  22.454  0.00  0.00            0
+ATOM    119    H   1     1       6.924   0.470  24.172  0.00  0.00            0
+ATOM    120    H   1     1       8.319   1.228  21.653  0.00  0.00            0
+ATOM    121    O   1     1       6.365   2.010  27.544  0.00  0.00            0
+ATOM    122    H   1     1       5.954   3.585  26.852  0.00  0.00            0
+ATOM    123    H   1     1       7.758   2.549  28.696  0.00  0.00            0
+ATOM    124    O   1     1      10.833   3.140  30.787  0.00  0.00            0
+ATOM    125    H   1     1      12.697   2.975  30.867  0.00  0.00            0
+ATOM    126    H   1     1      10.389   3.700  32.404  0.00  0.00            0
+ATOM    127    O   1     1       8.684   9.342   3.912  0.00  0.00            0
+ATOM    128    H   1     1       6.985   9.256   4.773  0.00  0.00            0
+ATOM    129    H   1     1       8.684  10.809   3.011  0.00  0.00            0
+ATOM    130    O   1     1       4.873   9.919   7.707  0.00  0.00            0
+ATOM    131    H   1     1       3.698   9.771   6.194  0.00  0.00            0
+ATOM    132    H   1     1       5.047  11.961   7.624  0.00  0.00            0
+ATOM    133    O   1     1      10.031   5.018   9.699  0.00  0.00            0
+ATOM    134    H   1     1       9.675   3.382  10.340  0.00  0.00            0
+ATOM    135    H   1     1       9.132   5.987  10.825  0.00  0.00            0
+ATOM    136    O   1     1      11.246   3.918  21.929  0.00  0.00            0
+ATOM    137    H   1     1      12.614   2.770  22.341  0.00  0.00            0
+ATOM    138    H   1     1      12.073   5.686  21.497  0.00  0.00            0
+ATOM    139    O   1     1       6.825   7.164  25.708  0.00  0.00            0
+ATOM    140    H   1     1       8.036   8.374  25.980  0.00  0.00            0
+ATOM    141    H   1     1       5.206   7.900  25.891  0.00  0.00            0
+ATOM    142    O   1     1      10.171  12.811   0.295  0.00  0.00            0
+ATOM    143    H   1     1      10.033  12.818  -1.609  0.00  0.00            0
+ATOM    144    H   1     1       9.880  14.492   0.480  0.00  0.00            0
+ATOM    145    O   1     1       8.190  17.402   1.253  0.00  0.00            0
+ATOM    146    H   1     1       9.472  18.531   1.253  0.00  0.00            0
+ATOM    147    H   1     1       6.351  17.817   1.568  0.00  0.00            0
+ATOM    148    O   1     1      11.233  16.188   8.299  0.00  0.00            0
+ATOM    149    H   1     1      10.291  17.689   8.166  0.00  0.00            0
+ATOM    150    H   1     1      12.768  17.123   8.733  0.00  0.00            0
+ATOM    151    O   1     1       6.386   8.002  12.846  0.00  0.00            0
+ATOM    152    H   1     1       7.701   8.896  13.655  0.00  0.00            0
+ATOM    153    H   1     1       5.591   8.877  11.519  0.00  0.00            0
+ATOM    154    O   1     1       8.184  10.419  18.848  0.00  0.00            0
+ATOM    155    H   1     1       9.498   9.434  19.905  0.00  0.00            0
+ATOM    156    H   1     1       6.882   9.027  18.948  0.00  0.00            0
+ATOM    157    O   1     1      10.806  14.431  21.328  0.00  0.00            0
+ATOM    158    H   1     1       9.177  13.531  20.670  0.00  0.00            0
+ATOM    159    H   1     1      11.344  15.696  20.448  0.00  0.00            0
+ATOM    160    O   1     1       9.237  13.928  30.341  0.00  0.00            0
+ATOM    161    H   1     1      10.779  14.839  30.522  0.00  0.00            0
+ATOM    162    H   1     1       9.965  13.192  28.899  0.00  0.00            0
+ATOM    163    O   1     1      10.918  21.707   1.864  0.00  0.00            0
+ATOM    164    H   1     1      10.280  23.449   2.279  0.00  0.00            0
+ATOM    165    H   1     1      12.708  21.456   1.749  0.00  0.00            0
+ATOM    166    O   1     1       9.353  16.125  13.927  0.00  0.00            0
+ATOM    167    H   1     1       9.938  17.594  14.618  0.00  0.00            0
+ATOM    168    H   1     1       9.518  16.360  12.244  0.00  0.00            0
+ATOM    169    O   1     1      10.371  11.107  14.268  0.00  0.00            0
+ATOM    170    H   1     1       9.644  10.406  15.859  0.00  0.00            0
+ATOM    171    H   1     1       9.434  12.523  14.117  0.00  0.00            0
+ATOM    172    O   1     1       3.351  22.769  20.196  0.00  0.00            0
+ATOM    173    H   1     1       2.055  23.686  21.503  0.00  0.00            0
+ATOM    174    H   1     1       2.452  21.401  19.413  0.00  0.00            0
+ATOM    175    O   1     1       6.836  21.329  23.199  0.00  0.00            0
+ATOM    176    H   1     1       8.249  20.848  22.320  0.00  0.00            0
+ATOM    177    H   1     1       5.668  21.841  21.886  0.00  0.00            0
+ATOM    178    O   1     1       4.604  15.649  30.043  0.00  0.00            0
+ATOM    179    H   1     1       6.453  15.217  30.207  0.00  0.00            0
+ATOM    180    H   1     1       3.822  14.762  31.562  0.00  0.00            0
+ATOM    181    O   1     1       7.125  19.976   9.421  0.00  0.00            0
+ATOM    182    H   1     1       5.918  20.453  10.730  0.00  0.00            0
+ATOM    183    H   1     1       8.099  21.496   9.491  0.00  0.00            0
+ATOM    184    O   1     1       9.063  25.912  13.186  0.00  0.00            0
+ATOM    185    H   1     1      10.350  26.572  12.367  0.00  0.00            0
+ATOM    186    H   1     1       9.680  24.367  13.697  0.00  0.00            0
+ATOM    187    O   1     1       8.022  22.343  17.042  0.00  0.00            0
+ATOM    188    H   1     1       9.144  23.367  18.074  0.00  0.00            0
+ATOM    189    H   1     1       6.562  23.462  16.852  0.00  0.00            0
+ATOM    190    O   1     1      10.762  26.285  19.963  0.00  0.00            0
+ATOM    191    H   1     1      11.036  27.966  20.538  0.00  0.00            0
+ATOM    192    H   1     1      11.078  25.401  21.456  0.00  0.00            0
+ATOM    193    O   1     1       9.158  22.902  28.391  0.00  0.00            0
+ATOM    194    H   1     1       8.219  23.528  27.085  0.00  0.00            0
+ATOM    195    H   1     1       8.089  21.760  29.509  0.00  0.00            0
+ATOM    196    O   1     1       6.219  20.158  31.921  0.00  0.00            0
+ATOM    197    H   1     1       5.635  18.511  31.161  0.00  0.00            0
+ATOM    198    H   1     1       7.530  19.624  33.071  0.00  0.00            0
+ATOM    199    O   1     1      11.191  31.509   2.617  0.00  0.00            0
+ATOM    200    H   1     1      10.460  32.214   4.108  0.00  0.00            0
+ATOM    201    H   1     1      13.176  31.751   2.577  0.00  0.00            0
+ATOM    202    O   1     1       4.748   0.055   8.605  0.00  0.00            0
+ATOM    203    H   1     1       5.380   0.517  10.183  0.00  0.00            0
+ATOM    204    H   1     1       6.050  -0.306   7.480  0.00  0.00            0
+ATOM    205    O   1     1       8.695  30.809  15.731  0.00  0.00            0
+ATOM    206    H   1     1       9.189  32.103  14.495  0.00  0.00            0
+ATOM    207    H   1     1       8.447  29.069  14.868  0.00  0.00            0
+ATOM    208    O   1     1      10.128  31.402  20.766  0.00  0.00            0
+ATOM    209    H   1     1       9.456  30.905  19.155  0.00  0.00            0
+ATOM    210    H   1     1       9.020  32.731  21.415  0.00  0.00            0
+ATOM    211    O   1     1      12.238  30.162  25.837  0.00  0.00            0
+ATOM    212    H   1     1      11.418  30.908  27.110  0.00  0.00            0
+ATOM    213    H   1     1      12.396  31.331  24.678  0.00  0.00            0
+ATOM    214    O   1     1      10.395  32.537  30.624  0.00  0.00            0
+ATOM    215    H   1     1      11.042  34.339  30.751  0.00  0.00            0
+ATOM    216    H   1     1      11.378  31.486  31.538  0.00  0.00            0
+ATOM    217    O   1     1      10.438   3.626   5.087  0.00  0.00            0
+ATOM    218    H   1     1      12.435   4.082   5.136  0.00  0.00            0
+ATOM    219    H   1     1       9.822   4.284   6.681  0.00  0.00            0
+ATOM    220    O   1     1      14.762   3.401  13.776  0.00  0.00            0
+ATOM    221    H   1     1      16.518   3.824  13.376  0.00  0.00            0
+ATOM    222    H   1     1      13.752   4.757  12.964  0.00  0.00            0
+ATOM    223    O   1     1      12.382   1.012  17.643  0.00  0.00            0
+ATOM    224    H   1     1      13.346   1.997  16.444  0.00  0.00            0
+ATOM    225    H   1     1      11.931   2.133  18.998  0.00  0.00            0
+ATOM    226    O   1     1      15.278   1.293  24.559  0.00  0.00            0
+ATOM    227    H   1     1      16.071   0.946  26.365  0.00  0.00            0
+ATOM    228    H   1     1      15.794   0.199  23.499  0.00  0.00            0
+ATOM    229    O   1     1      22.226  31.627  24.712  0.00  0.00            0
+ATOM    230    H   1     1      23.338  32.595  23.876  0.00  0.00            0
+ATOM    231    H   1     1      22.161  30.053  24.132  0.00  0.00            0
+ATOM    232    O   1     1      15.640   1.847  32.717  0.00  0.00            0
+ATOM    233    H   1     1      17.488   2.473  31.874  0.00  0.00            0
+ATOM    234    H   1     1      16.403   0.869  34.267  0.00  0.00            0
+ATOM    235    O   1     1      14.858  10.199   2.754  0.00  0.00            0
+ATOM    236    H   1     1      13.360  10.712   2.282  0.00  0.00            0
+ATOM    237    H   1     1      14.560   9.316   4.559  0.00  0.00            0
+ATOM    238    O   1     1      15.717   8.469  10.739  0.00  0.00            0
+ATOM    239    H   1     1      17.323   9.581  10.875  0.00  0.00            0
+ATOM    240    H   1     1      14.574   9.631  10.221  0.00  0.00            0
+ATOM    241    O   1     1      15.248  10.398  16.525  0.00  0.00            0
+ATOM    242    H   1     1      16.324   9.181  16.149  0.00  0.00            0
+ATOM    243    H   1     1      14.172  10.488  15.098  0.00  0.00            0
+ATOM    244    O   1     1      13.226   8.438  20.801  0.00  0.00            0
+ATOM    245    H   1     1      14.043   8.996  19.295  0.00  0.00            0
+ATOM    246    H   1     1      14.661   7.802  22.093  0.00  0.00            0
+ATOM    247    O   1     1      10.173  10.961  25.875  0.00  0.00            0
+ATOM    248    H   1     1      11.477  10.223  26.940  0.00  0.00            0
+ATOM    249    H   1     1      11.269  10.738  24.343  0.00  0.00            0
+ATOM    250    O   1     1      12.792   7.737  29.173  0.00  0.00            0
+ATOM    251    H   1     1      12.199   6.038  29.475  0.00  0.00            0
+ATOM    252    H   1     1      14.427   7.450  29.617  0.00  0.00            0
+ATOM    253    O   1     1      15.180  19.498   3.578  0.00  0.00            0
+ATOM    254    H   1     1      14.883  17.596   4.080  0.00  0.00            0
+ATOM    255    H   1     1      16.754  19.579   2.626  0.00  0.00            0
+ATOM    256    O   1     1      12.517  11.093   7.701  0.00  0.00            0
+ATOM    257    H   1     1      12.224  12.778   7.555  0.00  0.00            0
+ATOM    258    H   1     1      11.150  10.393   7.057  0.00  0.00            0
+ATOM    259    O   1     1      16.266  16.271  10.758  0.00  0.00            0
+ATOM    260    H   1     1      16.507  15.795  12.768  0.00  0.00            0
+ATOM    261    H   1     1      17.725  16.977  10.292  0.00  0.00            0
+ATOM    262    O   1     1      14.069  18.399  18.897  0.00  0.00            0
+ATOM    263    H   1     1      15.513  17.523  18.155  0.00  0.00            0
+ATOM    264    H   1     1      14.958  18.709  20.673  0.00  0.00            0
+ATOM    265    O   1     1      14.099  15.480  25.510  0.00  0.00            0
+ATOM    266    H   1     1      13.698  16.872  26.938  0.00  0.00            0
+ATOM    267    H   1     1      12.567  15.379  24.444  0.00  0.00            0
+ATOM    268    O   1     1      13.309  17.574  30.292  0.00  0.00            0
+ATOM    269    H   1     1      14.937  16.934  30.810  0.00  0.00            0
+ATOM    270    H   1     1      13.969  19.494  30.012  0.00  0.00            0
+ATOM    271    O   1     1      18.371  23.257   0.925  0.00  0.00            0
+ATOM    272    H   1     1      19.479  23.480   2.321  0.00  0.00            0
+ATOM    273    H   1     1      19.087  24.325  -0.369  0.00  0.00            0
+ATOM    274    O   1     1      12.100  21.730  11.355  0.00  0.00            0
+ATOM    275    H   1     1      13.141  22.287  12.743  0.00  0.00            0
+ATOM    276    H   1     1      13.467  22.236  10.244  0.00  0.00            0
+ATOM    277    O   1     1      12.163  23.290  23.597  0.00  0.00            0
+ATOM    278    H   1     1      11.324  22.736  24.949  0.00  0.00            0
+ATOM    279    H   1     1      13.882  22.872  23.840  0.00  0.00            0
+ATOM    280    O   1     1      20.173  26.761  22.628  0.00  0.00            0
+ATOM    281    H   1     1      20.206  26.532  20.792  0.00  0.00            0
+ATOM    282    H   1     1      21.556  25.742  23.389  0.00  0.00            0
+ATOM    283    O   1     1      16.701  21.165  22.605  0.00  0.00            0
+ATOM    284    H   1     1      18.028  20.686  23.848  0.00  0.00            0
+ATOM    285    H   1     1      17.104  22.866  21.949  0.00  0.00            0
+ATOM    286    O   1     1      11.391  26.461  33.705  0.00  0.00            0
+ATOM    287    H   1     1       9.841  27.192  34.048  0.00  0.00            0
+ATOM    288    H   1     1      11.776  25.540  35.243  0.00  0.00            0
+ATOM    289    O   1     1       9.898  25.989   4.553  0.00  0.00            0
+ATOM    290    H   1     1       8.902  26.131   6.039  0.00  0.00            0
+ATOM    291    H   1     1      10.287  27.806   4.376  0.00  0.00            0
+ATOM    292    O   1     1      14.308  26.960  10.877  0.00  0.00            0
+ATOM    293    H   1     1      15.302  27.405  12.173  0.00  0.00            0
+ATOM    294    H   1     1      15.463  26.151   9.633  0.00  0.00            0
+ATOM    295    O   1     1      13.433  22.960  16.904  0.00  0.00            0
+ATOM    296    H   1     1      13.409  24.131  18.132  0.00  0.00            0
+ATOM    297    H   1     1      13.624  21.191  17.520  0.00  0.00            0
+ATOM    298    O   1     1      16.409  26.768  26.875  0.00  0.00            0
+ATOM    299    H   1     1      17.590  26.987  25.431  0.00  0.00            0
+ATOM    300    H   1     1      14.751  27.703  26.230  0.00  0.00            0
+ATOM    301    O   1     1      14.405  22.733  29.892  0.00  0.00            0
+ATOM    302    H   1     1      15.423  23.079  28.494  0.00  0.00            0
+ATOM    303    H   1     1      12.826  23.259  29.416  0.00  0.00            0
+ATOM    304    O   1     1       6.905  29.408   0.749  0.00  0.00            0
+ATOM    305    H   1     1       8.428  30.483   1.567  0.00  0.00            0
+ATOM    306    H   1     1       6.353  30.814  -0.444  0.00  0.00            0
+ATOM    307    O   1     1       9.189  34.159   6.509  0.00  0.00            0
+ATOM    308    H   1     1      10.198  34.193   8.002  0.00  0.00            0
+ATOM    309    H   1     1       9.890  35.692   5.785  0.00  0.00            0
+ATOM    310    O   1     1      14.256  32.316   9.369  0.00  0.00            0
+ATOM    311    H   1     1      15.733  32.867   9.486  0.00  0.00            0
+ATOM    312    H   1     1      14.754  30.670  10.090  0.00  0.00            0
+ATOM    313    O   1     1      14.714  30.841  16.516  0.00  0.00            0
+ATOM    314    H   1     1      13.748  29.551  17.279  0.00  0.00            0
+ATOM    315    H   1     1      13.218  31.933  16.614  0.00  0.00            0
+ATOM    316    O   1     1      18.409  33.641  20.611  0.00  0.00            0
+ATOM    317    H   1     1      19.601  32.274  21.115  0.00  0.00            0
+ATOM    318    H   1     1      17.360  32.655  19.518  0.00  0.00            0
+ATOM    319    O   1     1      16.062  28.638  32.207  0.00  0.00            0
+ATOM    320    H   1     1      14.648  27.958  33.253  0.00  0.00            0
+ATOM    321    H   1     1      15.752  28.014  30.522  0.00  0.00            0
+ATOM    322    O   1     1      16.200  30.895   1.473  0.00  0.00            0
+ATOM    323    H   1     1      16.626  29.968  -0.130  0.00  0.00            0
+ATOM    324    H   1     1      17.167  29.833   2.927  0.00  0.00            0
+ATOM    325    O   1     1      20.278   3.529   6.048  0.00  0.00            0
+ATOM    326    H   1     1      20.977   3.611   4.575  0.00  0.00            0
+ATOM    327    H   1     1      21.312   4.513   7.251  0.00  0.00            0
+ATOM    328    O   1     1      23.079   5.778  10.408  0.00  0.00            0
+ATOM    329    H   1     1      24.650   6.259  10.838  0.00  0.00            0
+ATOM    330    H   1     1      22.342   7.609  10.178  0.00  0.00            0
+ATOM    331    O   1     1      19.581   2.031  12.110  0.00  0.00            0
+ATOM    332    H   1     1      19.039   1.082  10.440  0.00  0.00            0
+ATOM    333    H   1     1      21.141   2.991  11.851  0.00  0.00            0
+ATOM    334    O   1     1      22.005   3.223  23.178  0.00  0.00            0
+ATOM    335    H   1     1      21.429   4.090  24.554  0.00  0.00            0
+ATOM    336    H   1     1      20.654   1.791  22.711  0.00  0.00            0
+ATOM    337    O   1     1      16.630   6.422  23.792  0.00  0.00            0
+ATOM    338    H   1     1      16.219   4.804  24.406  0.00  0.00            0
+ATOM    339    H   1     1      17.066   7.128  25.282  0.00  0.00            0
+ATOM    340    O   1     1      21.676   5.564  28.158  0.00  0.00            0
+ATOM    341    H   1     1      20.658   6.717  29.185  0.00  0.00            0
+ATOM    342    H   1     1      23.413   5.828  28.996  0.00  0.00            0
+ATOM    343    O   1     1      15.257   5.265   5.626  0.00  0.00            0
+ATOM    344    H   1     1      16.914   4.519   5.490  0.00  0.00            0
+ATOM    345    H   1     1      15.144   6.150   6.972  0.00  0.00            0
+ATOM    346    O   1     1      20.137  11.082  10.437  0.00  0.00            0
+ATOM    347    H   1     1      20.021  10.947   8.733  0.00  0.00            0
+ATOM    348    H   1     1      21.025  12.555  10.853  0.00  0.00            0
+ATOM    349    O   1     1      23.089  14.627  12.437  0.00  0.00            0
+ATOM    350    H   1     1      24.716  15.254  12.736  0.00  0.00            0
+ATOM    351    H   1     1      23.284  13.228  13.653  0.00  0.00            0
+ATOM    352    O   1     1      24.083  12.649  22.566  0.00  0.00            0
+ATOM    353    H   1     1      22.397  12.663  23.042  0.00  0.00            0
+ATOM    354    H   1     1      24.901  13.851  23.565  0.00  0.00            0
+ATOM    355    O   1     1      17.865   7.909  30.036  0.00  0.00            0
+ATOM    356    H   1     1      17.509   8.045  31.982  0.00  0.00            0
+ATOM    357    H   1     1      18.078   9.582  29.318  0.00  0.00            0
+ATOM    358    O   1     1      18.824   8.486   0.104  0.00  0.00            0
+ATOM    359    H   1     1      19.997  10.191  -0.057  0.00  0.00            0
+ATOM    360    H   1     1      17.077   8.998   0.779  0.00  0.00            0
+ATOM    361    O   1     1      20.122   9.143   5.343  0.00  0.00            0
+ATOM    362    H   1     1      19.373   8.819   3.821  0.00  0.00            0
+ATOM    363    H   1     1      21.998   8.776   5.128  0.00  0.00            0
+ATOM    364    O   1     1      16.413  14.459   5.855  0.00  0.00            0
+ATOM    365    H   1     1      15.536  13.007   5.239  0.00  0.00            0
+ATOM    366    H   1     1      16.006  14.725   7.737  0.00  0.00            0
+ATOM    367    O   1     1      17.561  15.066  15.654  0.00  0.00            0
+ATOM    368    H   1     1      17.575  13.398  16.055  0.00  0.00            0
+ATOM    369    H   1     1      18.978  15.828  16.400  0.00  0.00            0
+ATOM    370    O   1     1      26.374  17.047  24.817  0.00  0.00            0
+ATOM    371    H   1     1      27.983  17.098  25.632  0.00  0.00            0
+ATOM    372    H   1     1      25.629  18.751  24.919  0.00  0.00            0
+ATOM    373    O   1     1      19.784  12.960  28.706  0.00  0.00            0
+ATOM    374    H   1     1      21.662  13.055  28.871  0.00  0.00            0
+ATOM    375    H   1     1      19.545  14.070  27.143  0.00  0.00            0
+ATOM    376    O   1     1      17.891  16.733  32.499  0.00  0.00            0
+ATOM    377    H   1     1      18.327  15.240  31.277  0.00  0.00            0
+ATOM    378    H   1     1      18.633  18.335  31.693  0.00  0.00            0
+ATOM    379    O   1     1      23.733  23.024   1.663  0.00  0.00            0
+ATOM    380    H   1     1      24.800  24.052   2.776  0.00  0.00            0
+ATOM    381    H   1     1      24.693  22.618   0.198  0.00  0.00            0
+ATOM    382    O   1     1      20.789  18.440   9.443  0.00  0.00            0
+ATOM    383    H   1     1      20.766  17.257   7.881  0.00  0.00            0
+ATOM    384    H   1     1      21.896  17.345  10.385  0.00  0.00            0
+ATOM    385    O   1     1      21.574  17.493  17.838  0.00  0.00            0
+ATOM    386    H   1     1      20.597  18.955  17.218  0.00  0.00            0
+ATOM    387    H   1     1      22.538  16.874  16.251  0.00  0.00            0
+ATOM    388    O   1     1      19.168  14.748  24.131  0.00  0.00            0
+ATOM    389    H   1     1      19.711  16.390  23.712  0.00  0.00            0
+ATOM    390    H   1     1      17.429  14.695  24.403  0.00  0.00            0
+ATOM    391    O   1     1      22.149  20.198  24.977  0.00  0.00            0
+ATOM    392    H   1     1      21.639  20.924  26.486  0.00  0.00            0
+ATOM    393    H   1     1      22.656  21.657  24.411  0.00  0.00            0
+ATOM    394    O   1     1      20.565  20.792  29.600  0.00  0.00            0
+ATOM    395    H   1     1      22.264  20.409  30.214  0.00  0.00            0
+ATOM    396    H   1     1      20.548  22.408  30.597  0.00  0.00            0
+ATOM    397    O   1     1      20.802  26.547   9.615  0.00  0.00            0
+ATOM    398    H   1     1      20.099  27.984   8.338  0.00  0.00            0
+ATOM    399    H   1     1      21.277  27.539  11.325  0.00  0.00            0
+ATOM    400    O   1     1      16.283  23.589   7.779  0.00  0.00            0
+ATOM    401    H   1     1      16.093  21.973   6.712  0.00  0.00            0
+ATOM    402    H   1     1      17.901  22.971   8.154  0.00  0.00            0
+ATOM    403    O   1     1      18.469  29.798  13.568  0.00  0.00            0
+ATOM    404    H   1     1      19.712  31.216  13.506  0.00  0.00            0
+ATOM    405    H   1     1      16.872  30.343  14.396  0.00  0.00            0
+ATOM    406    O   1     1      18.790  21.712  16.060  0.00  0.00            0
+ATOM    407    H   1     1      19.878  23.090  16.485  0.00  0.00            0
+ATOM    408    H   1     1      17.201  22.326  15.819  0.00  0.00            0
+ATOM    409    O   1     1      21.747  26.084  16.349  0.00  0.00            0
+ATOM    410    H   1     1      20.783  27.021  15.300  0.00  0.00            0
+ATOM    411    H   1     1      22.705  27.328  17.206  0.00  0.00            0
+ATOM    412    O   1     1      20.769  26.211  32.050  0.00  0.00            0
+ATOM    413    H   1     1      21.488  27.404  33.328  0.00  0.00            0
+ATOM    414    H   1     1      18.989  26.710  32.145  0.00  0.00            0
+ATOM    415    O   1     1      19.820  29.181   5.559  0.00  0.00            0
+ATOM    416    H   1     1      20.991  29.509   4.109  0.00  0.00            0
+ATOM    417    H   1     1      19.431  31.018   6.221  0.00  0.00            0
+ATOM    418    O   1     1      19.240  33.867   7.993  0.00  0.00            0
+ATOM    419    H   1     1      19.107  35.039   6.604  0.00  0.00            0
+ATOM    420    H   1     1      20.697  33.671   9.063  0.00  0.00            0
+ATOM    421    O   1     1      22.511  34.976  15.793  0.00  0.00            0
+ATOM    422    H   1     1      23.716  36.163  16.603  0.00  0.00            0
+ATOM    423    H   1     1      21.699  36.150  14.467  0.00  0.00            0
+ATOM    424    O   1     1      22.622  30.284  19.069  0.00  0.00            0
+ATOM    425    H   1     1      22.049  31.351  17.725  0.00  0.00            0
+ATOM    426    H   1     1      24.411  30.773  19.576  0.00  0.00            0
+ATOM    427    O   1     1      18.639  33.611  28.369  0.00  0.00            0
+ATOM    428    H   1     1      18.226  32.159  29.103  0.00  0.00            0
+ATOM    429    H   1     1      19.906  33.008  27.158  0.00  0.00            0
+ATOM    430    O   1     1      22.520   1.325  31.926  0.00  0.00            0
+ATOM    431    H   1     1      22.803   2.668  30.796  0.00  0.00            0
+ATOM    432    H   1     1      21.045   0.425  31.122  0.00  0.00            0
+ATOM    433    O   1     1      21.754   3.789   1.159  0.00  0.00            0
+ATOM    434    H   1     1      22.085   2.785  -0.180  0.00  0.00            0
+ATOM    435    H   1     1      20.850   5.175   0.610  0.00  0.00            0
+ATOM    436    O   1     1      28.457   5.539  12.133  0.00  0.00            0
+ATOM    437    H   1     1      29.489   4.390  11.182  0.00  0.00            0
+ATOM    438    H   1     1      29.161   7.131  12.587  0.00  0.00            0
+ATOM    439    O   1     1      22.495   5.966  17.324  0.00  0.00            0
+ATOM    440    H   1     1      24.377   5.379  17.393  0.00  0.00            0
+ATOM    441    H   1     1      21.906   5.491  18.857  0.00  0.00            0
+ATOM    442    O   1     1      28.128   3.304  22.287  0.00  0.00            0
+ATOM    443    H   1     1      28.123   2.999  20.491  0.00  0.00            0
+ATOM    444    H   1     1      26.533   3.355  22.876  0.00  0.00            0
+ATOM    445    O   1     1      28.378  10.455  27.266  0.00  0.00            0
+ATOM    446    H   1     1      30.019  10.292  28.051  0.00  0.00            0
+ATOM    447    H   1     1      28.635  10.039  25.463  0.00  0.00            0
+ATOM    448    O   1     1      27.031   8.353  34.806  0.00  0.00            0
+ATOM    449    H   1     1      26.116   9.984  34.571  0.00  0.00            0
+ATOM    450    H   1     1      28.685   8.951  34.739  0.00  0.00            0
+ATOM    451    O   1     1      24.951   8.160   4.454  0.00  0.00            0
+ATOM    452    H   1     1      25.930   9.616   5.160  0.00  0.00            0
+ATOM    453    H   1     1      25.947   7.994   2.724  0.00  0.00            0
+ATOM    454    O   1     1      26.937  12.436   6.869  0.00  0.00            0
+ATOM    455    H   1     1      25.492  13.284   6.708  0.00  0.00            0
+ATOM    456    H   1     1      27.689  13.332   8.266  0.00  0.00            0
+ATOM    457    O   1     1      23.365  11.214  16.933  0.00  0.00            0
+ATOM    458    H   1     1      22.247   9.744  16.789  0.00  0.00            0
+ATOM    459    H   1     1      23.264  12.035  18.539  0.00  0.00            0
+ATOM    460    O   1     1      28.321   8.759  22.158  0.00  0.00            0
+ATOM    461    H   1     1      27.662   6.895  22.482  0.00  0.00            0
+ATOM    462    H   1     1      26.971   9.710  21.902  0.00  0.00            0
+ATOM    463    O   1     1      27.071   6.109  29.555  0.00  0.00            0
+ATOM    464    H   1     1      27.591   7.663  28.857  0.00  0.00            0
+ATOM    465    H   1     1      27.304   6.320  31.261  0.00  0.00            0
+ATOM    466    O   1     1      22.474  11.704  34.640  0.00  0.00            0
+ATOM    467    H   1     1      22.752  13.304  35.584  0.00  0.00            0
+ATOM    468    H   1     1      22.840  12.090  33.030  0.00  0.00            0
+ATOM    469    O   1     1      21.656  14.971   5.615  0.00  0.00            0
+ATOM    470    H   1     1      21.690  15.860   3.977  0.00  0.00            0
+ATOM    471    H   1     1      19.964  14.225   5.774  0.00  0.00            0
+ATOM    472    O   1     1      28.539  21.492   9.820  0.00  0.00            0
+ATOM    473    H   1     1      27.288  22.181   8.688  0.00  0.00            0
+ATOM    474    H   1     1      28.065  22.420  11.602  0.00  0.00            0
+ATOM    475    O   1     1      28.364  16.020  11.109  0.00  0.00            0
+ATOM    476    H   1     1      30.033  16.649  12.089  0.00  0.00            0
+ATOM    477    H   1     1      28.456  17.440  10.082  0.00  0.00            0
+ATOM    478    O   1     1       0.054  13.686  18.103  0.00  0.00            0
+ATOM    479    H   1     1      -1.714  12.928  18.841  0.00  0.00            0
+ATOM    480    H   1     1       1.008  12.429  17.383  0.00  0.00            0
+ATOM    481    O   1     1      24.636  12.894  29.957  0.00  0.00            0
+ATOM    482    H   1     1      25.906  13.914  31.183  0.00  0.00            0
+ATOM    483    H   1     1      25.641  11.609  29.162  0.00  0.00            0
+ATOM    484    O   1     1      21.548  17.250   0.749  0.00  0.00            0
+ATOM    485    H   1     1      21.843  19.026   0.905  0.00  0.00            0
+ATOM    486    H   1     1      20.385  16.716  -0.697  0.00  0.00            0
+ATOM    487    O   1     1      26.095  27.274   4.520  0.00  0.00            0
+ATOM    488    H   1     1      27.889  26.458   4.505  0.00  0.00            0
+ATOM    489    H   1     1      25.648  26.970   6.165  0.00  0.00            0
+ATOM    490    O   1     1      23.610  22.515   8.008  0.00  0.00            0
+ATOM    491    H   1     1      22.653  21.187   8.739  0.00  0.00            0
+ATOM    492    H   1     1      22.286  24.095   8.444  0.00  0.00            0
+ATOM    493    O   1     1      27.355  18.929  18.180  0.00  0.00            0
+ATOM    494    H   1     1      27.200  20.349  17.155  0.00  0.00            0
+ATOM    495    H   1     1      25.579  18.322  18.770  0.00  0.00            0
+ATOM    496    O   1     1      26.765  23.633  14.444  0.00  0.00            0
+ATOM    497    H   1     1      27.441  25.298  13.651  0.00  0.00            0
+ATOM    498    H   1     1      25.086  24.256  14.749  0.00  0.00            0
+ATOM    499    O   1     1      31.478  20.769  20.986  0.00  0.00            0
+ATOM    500    H   1     1      30.440  22.509  21.135  0.00  0.00            0
+ATOM    501    H   1     1      30.567  19.656  20.043  0.00  0.00            0
+ATOM    502    O   1     1      24.812  20.412  32.668  0.00  0.00            0
+ATOM    503    H   1     1      26.242  21.478  31.874  0.00  0.00            0
+ATOM    504    H   1     1      25.787  19.023  33.158  0.00  0.00            0
+ATOM    505    O   1     1      22.105  29.076   0.928  0.00  0.00            0
+ATOM    506    H   1     1      23.296  27.923   1.739  0.00  0.00            0
+ATOM    507    H   1     1      22.623  30.994   0.882  0.00  0.00            0
+ATOM    508    O   1     1      29.572  31.256   8.626  0.00  0.00            0
+ATOM    509    H   1     1      30.795  30.203   7.736  0.00  0.00            0
+ATOM    510    H   1     1      28.277  31.519   7.260  0.00  0.00            0
+ATOM    511    O   1     1      31.817  34.843  18.283  0.00  0.00            0
+ATOM    512    H   1     1      32.438  34.389  16.474  0.00  0.00            0
+ATOM    513    H   1     1      32.743  36.422  18.341  0.00  0.00            0
+ATOM    514    O   1     1      27.915  25.601  19.033  0.00  0.00            0
+ATOM    515    H   1     1      29.358  26.561  19.190  0.00  0.00            0
+ATOM    516    H   1     1      28.148  24.429  17.530  0.00  0.00            0
+ATOM    517    O   1     1      24.548  24.654  24.025  0.00  0.00            0
+ATOM    518    H   1     1      25.528  25.635  22.824  0.00  0.00            0
+ATOM    519    H   1     1      25.300  25.200  25.645  0.00  0.00            0
+ATOM    520    O   1     1      28.540  22.922  30.370  0.00  0.00            0
+ATOM    521    H   1     1      27.414  24.096  29.781  0.00  0.00            0
+ATOM    522    H   1     1      29.674  23.914  31.873  0.00  0.00            0
+ATOM    523    O   1     1      24.969  33.623   1.014  0.00  0.00            0
+ATOM    524    H   1     1      26.521  33.058   1.518  0.00  0.00            0
+ATOM    525    H   1     1      24.990  34.322  -0.683  0.00  0.00            0
+ATOM    526    O   1     1      23.075  32.171  11.324  0.00  0.00            0
+ATOM    527    H   1     1      23.316  32.775  13.097  0.00  0.00            0
+ATOM    528    H   1     1      24.460  33.203  10.662  0.00  0.00            0
+ATOM    529    O   1     1      27.497   2.736  17.224  0.00  0.00            0
+ATOM    530    H   1     1      28.397   3.415  15.715  0.00  0.00            0
+ATOM    531    H   1     1      28.234   1.233  17.412  0.00  0.00            0
+ATOM    532    O   1     1      26.369  33.060  22.077  0.00  0.00            0
+ATOM    533    H   1     1      26.170  34.746  22.264  0.00  0.00            0
+ATOM    534    H   1     1      27.592  32.404  23.321  0.00  0.00            0
+ATOM    535    O   1     1      30.221  30.950  25.843  0.00  0.00            0
+ATOM    536    H   1     1      30.305  29.038  26.208  0.00  0.00            0
+ATOM    537    H   1     1      30.363  31.979  27.414  0.00  0.00            0
+ATOM    538    O   1     1      24.973  26.732  28.607  0.00  0.00            0
+ATOM    539    H   1     1      25.385  28.369  29.248  0.00  0.00            0
+ATOM    540    H   1     1      23.330  26.597  29.234  0.00  0.00            0
+ATOM    541    O   1     1      32.165   4.857   2.258  0.00  0.00            0
+ATOM    542    H   1     1      32.417   6.195   1.157  0.00  0.00            0
+ATOM    543    H   1     1      32.615   3.727   1.112  0.00  0.00            0
+ATOM    544    O   1     1      28.067   3.533   5.217  0.00  0.00            0
+ATOM    545    H   1     1      26.960   4.447   4.158  0.00  0.00            0
+ATOM    546    H   1     1      29.875   3.863   4.448  0.00  0.00            0
+ATOM    547    O   1     1      33.279   2.782  13.028  0.00  0.00            0
+ATOM    548    H   1     1      33.708   3.955  11.817  0.00  0.00            0
+ATOM    549    H   1     1      33.656   3.545  14.631  0.00  0.00            0
+ATOM    550    O   1     1      34.278   4.944  17.492  0.00  0.00            0
+ATOM    551    H   1     1      33.438   6.563  17.876  0.00  0.00            0
+ATOM    552    H   1     1      34.906   4.452  18.995  0.00  0.00            0
+ATOM    553    O   1     1      32.363   1.908  26.092  0.00  0.00            0
+ATOM    554    H   1     1      31.941   1.683  24.268  0.00  0.00            0
+ATOM    555    H   1     1      33.850   1.390  26.904  0.00  0.00            0
+ATOM    556    O   1     1      27.982   0.418  28.241  0.00  0.00            0
+ATOM    557    H   1     1      27.516   2.080  28.309  0.00  0.00            0
+ATOM    558    H   1     1      29.593   0.176  27.299  0.00  0.00            0
+ATOM    559    O   1     1      28.845  14.672   2.724  0.00  0.00            0
+ATOM    560    H   1     1      27.963  13.930   4.139  0.00  0.00            0
+ATOM    561    H   1     1      30.386  15.714   3.379  0.00  0.00            0
+ATOM    562    O   1     1      28.083  10.618  14.298  0.00  0.00            0
+ATOM    563    H   1     1      28.623  12.160  13.293  0.00  0.00            0
+ATOM    564    H   1     1      26.486  11.015  15.379  0.00  0.00            0
+ATOM    565    O   1     1      33.867  10.545  13.306  0.00  0.00            0
+ATOM    566    H   1     1      35.165   9.612  13.810  0.00  0.00            0
+ATOM    567    H   1     1      33.615  10.270  11.513  0.00  0.00            0
+ATOM    568    O   1     1      31.790   9.696  18.223  0.00  0.00            0
+ATOM    569    H   1     1      30.484   9.334  19.421  0.00  0.00            0
+ATOM    570    H   1     1      30.834  10.096  16.929  0.00  0.00            0
+ATOM    571    O   1     1      30.141  15.006  21.532  0.00  0.00            0
+ATOM    572    H   1     1      28.565  15.594  22.099  0.00  0.00            0
+ATOM    573    H   1     1      30.942  14.253  23.077  0.00  0.00            0
+ATOM    574    O   1     1      32.798  10.732  30.680  0.00  0.00            0
+ATOM    575    H   1     1      34.073   9.528  30.799  0.00  0.00            0
+ATOM    576    H   1     1      32.991  11.512  28.983  0.00  0.00            0
+ATOM    577    O   1     1      33.652  16.265   5.086  0.00  0.00            0
+ATOM    578    H   1     1      35.399  16.239   4.730  0.00  0.00            0
+ATOM    579    H   1     1      33.503  17.939   5.631  0.00  0.00            0
+ATOM    580    O   1     1      31.947  10.799   7.943  0.00  0.00            0
+ATOM    581    H   1     1      29.894  10.549   7.619  0.00  0.00            0
+ATOM    582    H   1     1      32.271  12.414   7.075  0.00  0.00            0
+ATOM    583    O   1     1       0.329  15.516  11.746  0.00  0.00            0
+ATOM    584    H   1     1      -0.446  14.249  12.939  0.00  0.00            0
+ATOM    585    H   1     1      -0.685  17.018  11.935  0.00  0.00            0
+ATOM    586    O   1     1       4.262  19.165  14.308  0.00  0.00            0
+ATOM    587    H   1     1       3.579  17.691  14.920  0.00  0.00            0
+ATOM    588    H   1     1       5.723  19.183  15.204  0.00  0.00            0
+ATOM    589    O   1     1      32.995  13.546  25.948  0.00  0.00            0
+ATOM    590    H   1     1      32.167  15.060  26.787  0.00  0.00            0
+ATOM    591    H   1     1      34.425  13.800  25.007  0.00  0.00            0
+ATOM    592    O   1     1       1.773  13.524  34.037  0.00  0.00            0
+ATOM    593    H   1     1       0.227  14.409  33.446  0.00  0.00            0
+ATOM    594    H   1     1       2.167  14.670  35.511  0.00  0.00            0
+ATOM    595    O   1     1      33.029  20.529   7.247  0.00  0.00            0
+ATOM    596    H   1     1      34.388  21.414   8.003  0.00  0.00            0
+ATOM    597    H   1     1      31.451  20.831   8.182  0.00  0.00            0
+ATOM    598    O   1     1       2.037  24.250  10.251  0.00  0.00            0
+ATOM    599    H   1     1       3.743  25.008   9.876  0.00  0.00            0
+ATOM    600    H   1     1       1.894  25.043  11.903  0.00  0.00            0
+ATOM    601    O   1     1      32.753  19.259  13.976  0.00  0.00            0
+ATOM    602    H   1     1      32.792  20.886  13.792  0.00  0.00            0
+ATOM    603    H   1     1      34.334  18.799  14.976  0.00  0.00            0
+ATOM    604    O   1     1       0.396  18.673  18.699  0.00  0.00            0
+ATOM    605    H   1     1      -1.211  18.950  19.127  0.00  0.00            0
+ATOM    606    H   1     1       0.469  16.977  18.436  0.00  0.00            0
+ATOM    607    O   1     1      30.855  18.370  27.959  0.00  0.00            0
+ATOM    608    H   1     1      29.759  19.681  28.690  0.00  0.00            0
+ATOM    609    H   1     1      32.103  19.477  26.763  0.00  0.00            0
+ATOM    610    O   1     1      27.723  15.992  33.091  0.00  0.00            0
+ATOM    611    H   1     1      29.390  16.423  32.192  0.00  0.00            0
+ATOM    612    H   1     1      27.801  15.859  34.804  0.00  0.00            0
+ATOM    613    O   1     1      31.068  27.895   3.348  0.00  0.00            0
+ATOM    614    H   1     1      32.517  27.825   4.610  0.00  0.00            0
+ATOM    615    H   1     1      31.529  29.459   2.324  0.00  0.00            0
+ATOM    616    O   1     1      35.039  28.008   6.663  0.00  0.00            0
+ATOM    617    H   1     1      35.966  26.934   7.683  0.00  0.00            0
+ATOM    618    H   1     1      36.055  28.336   5.336  0.00  0.00            0
+ATOM    619    O   1     1      29.356  28.196  13.025  0.00  0.00            0
+ATOM    620    H   1     1      29.210  29.335  14.589  0.00  0.00            0
+ATOM    621    H   1     1      28.874  29.629  11.867  0.00  0.00            0
+ATOM    622    O   1     1      32.386  28.434  18.961  0.00  0.00            0
+ATOM    623    H   1     1      33.368  28.574  20.411  0.00  0.00            0
+ATOM    624    H   1     1      33.410  27.406  17.949  0.00  0.00            0
+ATOM    625    O   1     1      30.898  25.390  25.799  0.00  0.00            0
+ATOM    626    H   1     1      32.369  25.913  24.580  0.00  0.00            0
+ATOM    627    H   1     1      31.317  24.075  27.029  0.00  0.00            0
+ATOM    628    O   1     1      32.259  25.611  33.104  0.00  0.00            0
+ATOM    629    H   1     1      32.238  25.736  34.806  0.00  0.00            0
+ATOM    630    H   1     1      33.920  25.042  32.775  0.00  0.00            0
+ATOM    631    O   1     1      30.290  32.645   1.341  0.00  0.00            0
+ATOM    632    H   1     1      29.949  32.793  -0.430  0.00  0.00            0
+ATOM    633    H   1     1      31.762  33.340   1.847  0.00  0.00            0
+ATOM    634    O   1     1      25.536  34.235   6.469  0.00  0.00            0
+ATOM    635    H   1     1      25.716  36.059   6.651  0.00  0.00            0
+ATOM    636    H   1     1      25.283  33.866   4.895  0.00  0.00            0
+ATOM    637    O   1     1      31.674  33.161  13.106  0.00  0.00            0
+ATOM    638    H   1     1      31.793  34.863  13.281  0.00  0.00            0
+ATOM    639    H   1     1      30.425  32.928  11.783  0.00  0.00            0
+ATOM    640    O   1     1      33.844  32.668  22.296  0.00  0.00            0
+ATOM    641    H   1     1      32.750  32.234  23.524  0.00  0.00            0
+ATOM    642    H   1     1      32.917  32.875  20.736  0.00  0.00            0
+ATOM    643    O   1     1      31.603  30.542  30.805  0.00  0.00            0
+ATOM    644    H   1     1      33.451  30.804  30.468  0.00  0.00            0
+ATOM    645    H   1     1      31.575  28.816  31.756  0.00  0.00            0
+ATOM    646    O   1     1      26.295  31.235  30.599  0.00  0.00            0
+ATOM    647    H   1     1      27.834  30.515  30.607  0.00  0.00            0
+ATOM    648    H   1     1      26.362  32.920  29.856  0.00  0.00            0
+END
diff --git a/tools/i-pi/examples/tutorial/README b/tools/i-pi/examples/tutorial/README
new file mode 100644
index 0000000000000000000000000000000000000000..3062659bd053f3f66022dbcbcc917157fce08ba6
--- /dev/null
+++ b/tools/i-pi/examples/tutorial/README
@@ -0,0 +1,6 @@
+ -- Example with the rudimentary PH2 code --
+
+ * This gives an example of para-H2 with the isotropic Silvera-Goldman 
+   pair potential, as discussed in the tutorial section of the user manual.
+   Please refer to this section for more detailed instructions
+   on how to run this example.
diff --git a/tools/i-pi/examples/tutorial/tutorial-1/our_ref.pdb b/tools/i-pi/examples/tutorial/tutorial-1/our_ref.pdb
new file mode 100755
index 0000000000000000000000000000000000000000..fbeba1afc9290c87b479d0ee6dfee677299e7fc2
--- /dev/null
+++ b/tools/i-pi/examples/tutorial/tutorial-1/our_ref.pdb
@@ -0,0 +1,111 @@
+TITLE              Traj: positions{angstrom} Step:           0  Bead:       1 
+CRYST1   17.847   17.847   17.847  90.00  90.00  90.00 P 1           1
+ATOM      1   H2   1     1       0.147   0.132   0.114  0.00  0.00             0
+ATOM      2   H2   1     1      -0.125   2.943   3.188  0.00  0.00             0
+ATOM      3   H2   1     1       3.042   2.937   0.107  0.00  0.00             0
+ATOM      4   H2   1     1       2.976  -0.148   2.960  0.00  0.00             0
+ATOM      5   H2   1     1      -0.229  -0.030   5.923  0.00  0.00             0
+ATOM      6   H2   1     1       0.094   2.999   8.915  0.00  0.00             0
+ATOM      7   H2   1     1       2.954   2.895   5.910  0.00  0.00             0
+ATOM      8   H2   1     1       2.892  -0.155   8.870  0.00  0.00             0
+ATOM      9   H2   1     1      -0.048   0.087  11.901  0.00  0.00             0
+ATOM     10   H2   1     1       0.017   2.947  14.955  0.00  0.00             0
+ATOM     11   H2   1     1       2.979   2.989  11.875  0.00  0.00             0
+ATOM     12   H2   1     1       2.976   0.114  14.794  0.00  0.00             0
+ATOM     13   H2   1     1      -0.053   5.852  -0.165  0.00  0.00             0
+ATOM     14   H2   1     1       0.006   8.858   3.040  0.00  0.00             0
+ATOM     15   H2   1     1       3.041   8.951  -0.096  0.00  0.00             0
+ATOM     16   H2   1     1       3.007   5.879   2.876  0.00  0.00             0
+ATOM     17   H2   1     1       0.057   5.910   6.036  0.00  0.00             0
+ATOM     18   H2   1     1      -0.097   8.867   8.804  0.00  0.00             0
+ATOM     19   H2   1     1       2.832   8.766   5.719  0.00  0.00             0
+ATOM     20   H2   1     1       3.148   5.956   8.964  0.00  0.00             0
+ATOM     21   H2   1     1       0.031   5.974  11.932  0.00  0.00             0
+ATOM     22   H2   1     1       0.124   8.972  14.723  0.00  0.00             0
+ATOM     23   H2   1     1       2.998   8.861  11.952  0.00  0.00             0
+ATOM     24   H2   1     1       2.971   5.943  14.914  0.00  0.00             0
+ATOM     25   H2   1     1       0.009  11.770   0.089  0.00  0.00             0
+ATOM     26   H2   1     1       0.015  14.931   2.992  0.00  0.00             0
+ATOM     27   H2   1     1       2.924  14.889   0.062  0.00  0.00             0
+ATOM     28   H2   1     1       2.832  11.918   3.162  0.00  0.00             0
+ATOM     29   H2   1     1      -0.097  11.885   6.105  0.00  0.00             0
+ATOM     30   H2   1     1       0.169  14.731   8.889  0.00  0.00             0
+ATOM     31   H2   1     1       2.877  14.750   5.921  0.00  0.00             0
+ATOM     32   H2   1     1       3.078  12.038   8.936  0.00  0.00             0
+ATOM     33   H2   1     1       0.019  12.011  11.885  0.00  0.00             0
+ATOM     34   H2   1     1       0.139  14.848  14.841  0.00  0.00             0
+ATOM     35   H2   1     1       2.904  14.835  12.020  0.00  0.00             0
+ATOM     36   H2   1     1       3.083  12.013  14.942  0.00  0.00             0
+ATOM     37   H2   1     1       6.042   0.051  -0.122  0.00  0.00             0
+ATOM     38   H2   1     1       5.911   2.957   2.811  0.00  0.00             0
+ATOM     39   H2   1     1       8.949   3.111   0.013  0.00  0.00             0
+ATOM     40   H2   1     1       8.991  -0.010   2.794  0.00  0.00             0
+ATOM     41   H2   1     1       6.061   0.042   6.018  0.00  0.00             0
+ATOM     42   H2   1     1       6.156   3.002   8.708  0.00  0.00             0
+ATOM     43   H2   1     1       8.922   3.069   5.909  0.00  0.00             0
+ATOM     44   H2   1     1       8.988   0.132   9.006  0.00  0.00             0
+ATOM     45   H2   1     1       5.916   0.157  11.936  0.00  0.00             0
+ATOM     46   H2   1     1       6.011   2.841  14.909  0.00  0.00             0
+ATOM     47   H2   1     1       8.974   2.990  11.906  0.00  0.00             0
+ATOM     48   H2   1     1       8.946  -0.012  14.762  0.00  0.00             0
+ATOM     49   H2   1     1       5.871   5.856  -0.119  0.00  0.00             0
+ATOM     50   H2   1     1       6.164   8.843   3.017  0.00  0.00             0
+ATOM     51   H2   1     1       9.193   8.762   0.076  0.00  0.00             0
+ATOM     52   H2   1     1       8.834   5.965   2.835  0.00  0.00             0
+ATOM     53   H2   1     1       5.987   6.003   5.941  0.00  0.00             0
+ATOM     54   H2   1     1       5.977   8.974   8.839  0.00  0.00             0
+ATOM     55   H2   1     1       9.025   8.846   6.022  0.00  0.00             0
+ATOM     56   H2   1     1       8.848   5.694   9.143  0.00  0.00             0
+ATOM     57   H2   1     1       5.924   6.032  11.865  0.00  0.00             0
+ATOM     58   H2   1     1       6.019   8.827  14.866  0.00  0.00             0
+ATOM     59   H2   1     1       8.835   9.076  11.941  0.00  0.00             0
+ATOM     60   H2   1     1       8.891   6.039  14.895  0.00  0.00             0
+ATOM     61   H2   1     1       5.856  11.998   0.105  0.00  0.00             0
+ATOM     62   H2   1     1       5.828  14.783   2.903  0.00  0.00             0
+ATOM     63   H2   1     1       8.942  14.899  -0.042  0.00  0.00             0
+ATOM     64   H2   1     1       8.930  11.966   3.015  0.00  0.00             0
+ATOM     65   H2   1     1       6.073  11.865   5.912  0.00  0.00             0
+ATOM     66   H2   1     1       6.031  14.891   8.979  0.00  0.00             0
+ATOM     67   H2   1     1       8.972  14.858   5.883  0.00  0.00             0
+ATOM     68   H2   1     1       8.957  11.835   8.967  0.00  0.00             0
+ATOM     69   H2   1     1       5.966  11.882  12.044  0.00  0.00             0
+ATOM     70   H2   1     1       5.947  14.705  14.774  0.00  0.00             0
+ATOM     71   H2   1     1       8.876  14.853  11.951  0.00  0.00             0
+ATOM     72   H2   1     1       8.992  11.917  14.929  0.00  0.00             0
+ATOM     73   H2   1     1      11.946   0.088  -0.028  0.00  0.00             0
+ATOM     74   H2   1     1      11.829   3.081   3.117  0.00  0.00             0
+ATOM     75   H2   1     1      15.004   3.033  -0.008  0.00  0.00             0
+ATOM     76   H2   1     1      14.828   0.120   3.029  0.00  0.00             0
+ATOM     77   H2   1     1      11.906   0.017   5.995  0.00  0.00             0
+ATOM     78   H2   1     1      11.873   2.916   9.016  0.00  0.00             0
+ATOM     79   H2   1     1      14.907   3.062   5.960  0.00  0.00             0
+ATOM     80   H2   1     1      14.948  -0.122   8.864  0.00  0.00             0
+ATOM     81   H2   1     1      11.869  -0.118  11.930  0.00  0.00             0
+ATOM     82   H2   1     1      11.932   2.863  14.979  0.00  0.00             0
+ATOM     83   H2   1     1      14.835   2.976  12.018  0.00  0.00             0
+ATOM     84   H2   1     1      14.852  -0.218  14.783  0.00  0.00             0
+ATOM     85   H2   1     1      11.892   5.990   0.058  0.00  0.00             0
+ATOM     86   H2   1     1      11.816   8.684   2.936  0.00  0.00             0
+ATOM     87   H2   1     1      14.958   8.876  -0.055  0.00  0.00             0
+ATOM     88   H2   1     1      14.840   6.061   2.916  0.00  0.00             0
+ATOM     89   H2   1     1      11.911   5.971   5.726  0.00  0.00             0
+ATOM     90   H2   1     1      11.921   8.947   8.915  0.00  0.00             0
+ATOM     91   H2   1     1      15.032   8.972   5.831  0.00  0.00             0
+ATOM     92   H2   1     1      14.699   5.889   8.931  0.00  0.00             0
+ATOM     93   H2   1     1      11.765   5.844  11.846  0.00  0.00             0
+ATOM     94   H2   1     1      11.983   8.755  14.933  0.00  0.00             0
+ATOM     95   H2   1     1      14.840   8.926  11.947  0.00  0.00             0
+ATOM     96   H2   1     1      14.976   5.712  14.771  0.00  0.00             0
+ATOM     97   H2   1     1      11.824  11.871  -0.007  0.00  0.00             0
+ATOM     98   H2   1     1      11.894  14.840   2.771  0.00  0.00             0
+ATOM     99   H2   1     1      15.039  14.928   0.021  0.00  0.00             0
+ATOM    100   H2   1     1      14.876  11.851   2.910  0.00  0.00             0
+ATOM    101   H2   1     1      11.785  11.934   6.071  0.00  0.00             0
+ATOM    102   H2   1     1      11.937  14.681   8.929  0.00  0.00             0
+ATOM    103   H2   1     1      14.935  14.902   5.873  0.00  0.00             0
+ATOM    104   H2   1     1      14.882  11.944   9.007  0.00  0.00             0
+ATOM    105   H2   1     1      11.941  11.956  11.877  0.00  0.00             0
+ATOM    106   H2   1     1      11.791  14.900  14.955  0.00  0.00             0
+ATOM    107   H2   1     1      14.838  14.947  11.831  0.00  0.00             0
+ATOM    108   H2   1     1      14.891  12.005  15.050  0.00  0.00             0
+END
diff --git a/tools/i-pi/examples/tutorial/tutorial-1/our_ref.xyz b/tools/i-pi/examples/tutorial/tutorial-1/our_ref.xyz
new file mode 100644
index 0000000000000000000000000000000000000000..46ecc5b5d95338524374ae2ce2a7affeee0476d3
--- /dev/null
+++ b/tools/i-pi/examples/tutorial/tutorial-1/our_ref.xyz
@@ -0,0 +1,110 @@
+108
+#  CELL(abcABC):  17.8469984966  17.8469984966  17.8469984966  90.00000  90.00000  90.00000  Traj:  positions  Step:  0  Bead:  0  
+H2   0.147000137166   0.132000079971   0.114000117173
+H2   -0.125000123837   2.94299788633   3.18800164278
+H2   3.04200165055   2.93700230854   0.107000161039
+H2   2.97599737714   -0.147999752916   2.96000035008
+H2   -0.228999850096   -0.0300000085539   5.92297467609
+H2   0.0939998645211   2.99900071046   8.91499553915
+H2   2.95399948052   2.89500151338   5.91000983444
+H2   2.8920010786   -0.155000238227   8.8700154763
+H2   -0.0480000242697   0.0869999083873   11.900983782
+H2   0.0169999766244   2.94699846603   14.9550242141
+H2   2.97899781192   2.98899926119   11.875001181
+H2   2.97599737714   0.114000117173   14.7939955891
+H2   -0.0529997434675   5.85201201223   -0.165000099964
+H2   0.00600002287786   8.85800315363   3.04000136069
+H2   3.04100150562   8.95097958943   -0.0960001543749
+H2   3.00700186988   5.87900004994   2.87599875977
+H2   0.0569997939979   5.91000983444   6.03600692814
+H2   -0.0969997701246   8.8669991662   8.80397416049
+H2   2.83199767476   8.76597923681   5.71897686163
+H2   3.14800113748   5.95599533399   8.96399734879
+H2   0.0309999947276   5.97398735913   11.9319935665
+H2   0.12399997891   8.97198792467   14.7229800075
+H2   2.99800056553   8.86101946373   11.9519964651
+H2   2.97100194428   5.94297757463   14.9140129803
+H2   0.00899998139907   11.7700124225   0.0890001982411
+H2   0.0150000042769   14.9309995688   2.99199969597
+H2   2.92400042449   14.8889828983   0.0619999894552
+H2   2.83199767476   11.9180232882   3.16199787469
+H2   -0.0969997701246   11.8850026303   6.10501163633
+H2   0.169000150494   14.7310235011   8.88901293814
+H2   2.8769989047   14.7500209629   5.92101672041
+H2   3.07800157614   12.0379877617   8.93600387439
+H2   0.0190000018896   12.010999724   11.8850026303
+H2   0.139000036105   14.8480245822   14.8409865253
+H2   2.90399752595   14.8350068229   12.0199957365
+H2   3.08300230078   12.0130105974   14.9420064547
+H2   6.04198663062   0.050999982791   -0.122000218234
+H2   5.91101527114   2.9569999153   2.81099992306
+H2   8.94902163375   3.11100106696   0.0129999790117
+H2   8.9909853865   -0.0100000204905   2.79399745931
+H2   6.06098409246   0.0420000013919   6.018014903
+H2   6.15602431937   3.00200114524   8.7079814146
+H2   8.92198067832   3.0690002718   5.90900439774
+H2   8.98802199413   0.132000079971   9.00601401927
+H2   5.91598953692   0.156999998903   11.9360153133
+H2   6.01097684611   2.8409989791   14.9089857968
+H2   8.97399879806   2.98999940612   11.9060109655
+H2   8.94600532365   -0.011999992838   14.7619803679
+H2   5.87100947407   5.8559808413   -0.118999783453
+H2   6.16401489524   8.84297452087   3.01699802737
+H2   9.19302524528   8.76201040774   0.075999901723
+H2   8.8339785083   5.96499134656   2.83499810954
+H2   5.9870051185   6.00298627024   5.94101961895
+H2   5.97700366923   8.97399879806   8.83900569179
+H2   9.02501148111   8.84599083096   6.02198373208
+H2   8.84800170436   5.69399969732   9.14301799894
+H2   5.92398011279   6.03198518135   11.8649997317
+H2   6.0190203397   8.82699336913   14.8660166074
+H2   8.834983945   9.07602416415   11.9409895791
+H2   8.89102381154   6.03902323824   14.8950155185
+H2   5.8559808413   11.9979819646   0.104999871185
+H2   5.82798736689   14.7829887031   2.90299738102
+H2   8.94198357686   14.8989843475   -0.0420000013919
+H2   8.93002417191   11.9660196611   3.01499773752
+H2   6.07299641512   11.8649997317   5.91202070784
+H2   6.03097974465   14.8909937717   8.97902598156
+H2   8.97198792467   14.8580260315   5.88302179673
+H2   8.95701220962   11.8349953839   8.96701365889
+H2   5.96599678326   11.8819863202   12.0440203819
+H2   5.94699932142   14.7049879824   14.7739926905
+H2   8.87599517877   14.852998848   11.9509910284
+H2   8.9919908232   11.9170178515   14.9289886954
+H2   11.9460167626   0.0880000533142   -0.0279999832887
+H2   11.8290156815   3.08100201092   3.11700193652
+H2   15.0040260237   3.0330003462   -0.00799999522534
+H2   14.8280216837   0.11999992838   3.0289997665
+H2   11.9060109655   0.0169999766244   5.99499569437
+H2   11.8729903076   2.91599926507   9.01601546854
+H2   14.9069749234   3.06199925731   5.96001708079
+H2   14.9479861572   -0.122000218234   8.8639828561
+H2   11.8690214785   -0.118000167703   11.9299826931
+H2   11.9319935665   2.86300216749   14.9789959417
+H2   14.8350068229   2.97599737714   12.0179848631
+H2   14.8519934113   -0.217999843432   14.7829887031
+H2   11.8919877694   5.99002142859   0.0579999389248
+H2   11.8159979221   8.68400968698   2.93600216361
+H2   14.9579876065   8.87599517877   -0.0550000333213
+H2   14.8399810886   6.06098409246   2.91599926507
+H2   11.9109852313   5.97102396676   5.72601491853
+H2   11.9209866806   8.94701076035   8.91499553915
+H2   15.0320194981   8.97198792467   5.83100367699
+H2   14.6990082799   5.88900149921   8.93097669089
+H2   11.764985239   5.84402143636   11.8460022699
+H2   11.9830062496   8.75502526857   14.9330104422
+H2   14.8399810886   8.92600242512   11.9470221993
+H2   14.9759796316   5.71199172246   14.7709763805
+H2   11.823988498   11.8709794342   -0.0070000090516
+H2   11.8939986428   14.8399810886   2.77099941776
+H2   15.0390046373   14.9279832587   0.0209999742371
+H2   14.8760180566   11.8509765357   2.90999839551
+H2   11.7849881376   11.9340044399   6.07098554172
+H2   11.93702075   14.6810162548   8.92901873521
+H2   14.9350213156   14.9020006576   5.87302034746
+H2   14.8819977591   11.9440058892   9.00701945597
+H2   11.9409895791   11.9560182119   11.8770120544
+H2   11.7910207578   14.8999897842   14.9550242141
+H2   14.838023133   14.9469807205   11.8309736371
+H2   14.8909937717   12.0050200215   15.0500115233
diff --git a/tools/i-pi/examples/tutorial/tutorial-1/tutorial-1.xml b/tools/i-pi/examples/tutorial/tutorial-1/tutorial-1.xml
new file mode 100755
index 0000000000000000000000000000000000000000..713953fe46ba3f83bb6bd126af8b97e844a33edb
--- /dev/null
+++ b/tools/i-pi/examples/tutorial/tutorial-1/tutorial-1.xml
@@ -0,0 +1,26 @@
+<simulation verbosity='high'>
+   <initialize nbeads='4'>
+      <file mode='pdb' units='angstrom'> our_ref.pdb </file>
+      <velocities mode='thermal' units='kelvin'> 25 </velocities>
+   </initialize>
+   <output prefix='tut1'>
+      <properties filename='md' stride='1'> [step, time{picosecond}, conserved{kelvin}, temperature{kelvin}, potential{kelvin}, kinetic_cv{kelvin}] </properties>
+      <properties filename='force' stride='20'> [atom_f{piconewton}(atom=0;bead=0)] </properties>
+      <trajectory filename='pos' stride='100' format='pdb' cell_units='angstrom'> positions{angstrom} </trajectory>
+      <checkpoint filename='checkpoint' stride='1000' overwrite='True'/>
+   </output>
+   <total_steps> 5000 </total_steps>
+   <forces>
+      <socket mode="inet">
+         <address>localhost</address>
+         <port> 31415 </port>
+      </socket>
+   </forces>
+   <ensemble mode='nvt'>
+      <thermostat mode='pile_g'>
+         <tau units='femtosecond'> 25 </tau>
+      </thermostat>
+      <timestep units='femtosecond'> 1 </timestep>
+      <temperature units='kelvin'> 25 </temperature>
+   </ensemble>
+</simulation>
diff --git a/tools/i-pi/examples/tutorial/tutorial-2/tutorial-1_RESTART b/tools/i-pi/examples/tutorial/tutorial-2/tutorial-1_RESTART
new file mode 100755
index 0000000000000000000000000000000000000000..30912ef04a43dc66bf20f56cb0dbeab184eb3070
--- /dev/null
+++ b/tools/i-pi/examples/tutorial/tutorial-2/tutorial-1_RESTART
@@ -0,0 +1,736 @@
+<simulation verbosity='high'>
+   <step>5000</step>
+   <beads natoms='108' nbeads='4'>
+      <q shape='(4, 324)'>
+       [  -1.83955900e+00,  -2.24073938e+00,  -1.08250020e+00,  -5.70795599e-01,   7.32627980e+00, 
+           7.19210265e+00,  -3.30615234e-01,   3.98119438e+00,   1.51691432e+00,   2.52717260e+00, 
+          -1.27666806e+00,   4.73413388e+00,   1.12126184e+00,   1.26764230e+00,   1.02704916e+01, 
+           1.29998780e+00,   3.73413588e+00,   1.61919862e+01,   5.88202729e+00,   8.04850032e+00, 
+           1.24311326e+01,   1.02078708e+01,   1.86360455e+00,   1.64012625e+01,   1.17619062e+00, 
+           4.24983476e-01,   2.55535965e+01,   1.65002846e-01,   5.34507262e+00,   2.73617602e+01, 
+           6.62641741e+00,   5.73764066e+00,   2.33893339e+01,   6.10026934e+00,   2.56958142e+00, 
+           2.92780910e+01,   2.01269291e+00,   8.69979574e+00,  -6.33324249e-01,   1.14898211e+00, 
+           1.61301653e+01,   3.70551886e+00,   5.80295868e+00,   1.66782201e+01,   2.75413040e-01, 
+           5.71194979e+00,   1.32139518e+01,   7.47120998e+00,   2.90527832e+00,   1.26243247e+01, 
+           1.18688316e+01,   3.86777222e-01,   1.86473408e+01,   1.66542003e+01,   6.49634508e+00, 
+           1.76520477e+01,   1.52792529e+01,   9.56145353e+00,   1.16514109e+01,   1.76464481e+01, 
+           7.90247690e-01,   1.28040514e+01,   1.99445660e+01,   1.91319083e+00,   1.48232256e+01, 
+           2.81978021e+01,   7.47808952e+00,   1.73026463e+01,   2.15060634e+01,   7.95108626e+00, 
+           9.08836417e+00,   2.88452581e+01,  -8.39364894e-01,   2.33095835e+01,  -1.26661254e+00, 
+          -2.26048825e+00,   2.73659085e+01,   6.83034984e+00,   5.55328952e+00,   3.00964760e+01, 
+          -2.13570013e+00,   3.85462300e+00,   2.11139559e+01,   6.98601751e+00,  -1.69779185e+00, 
+           2.02798593e+01,   8.98144417e+00,  -1.83724239e+00,   2.74015435e+01,   1.70384301e+01, 
+           5.49534087e+00,   2.92028322e+01,   1.28972834e+01,   4.00538016e+00,   2.38450279e+01, 
+           1.73369977e+01,   6.37702010e-01,   2.23536671e+01,   2.24315602e+01,  -9.17792114e-01, 
+           2.76922986e+01,   2.71486460e+01,   4.59352860e+00,   2.73738615e+01,   2.47996576e+01, 
+           3.50789080e+00,   2.24217692e+01,   2.85214338e+01,   1.27744386e+01,  -3.16474409e+00, 
+          -4.32938118e+00,   1.23369331e+01,   5.19778303e+00,   6.29834102e+00,   1.65171169e+01, 
+           7.43433654e+00,  -1.50763053e-01,   1.71757563e+01,   8.73504480e-02,   2.91427460e+00, 
+           1.37000162e+01,   3.58863547e-01,   1.16430675e+01,   1.33468414e+01,   7.88277760e+00, 
+           1.35602855e+01,   1.85311481e+01,   6.66308247e+00,   1.10802627e+01,   1.62994052e+01, 
+           1.15789465e+00,   1.73181503e+01,   9.33358989e+00,   3.82104623e-01,   2.45811794e+01, 
+           1.33131712e+01,   5.68071890e+00,   2.77946720e+01,   1.29013165e+01,   7.27837218e+00, 
+           2.09147450e+01,   1.84799695e+01,  -1.43953367e+00,   2.88271546e+01,   1.06297113e+01, 
+           1.06874159e+01,   1.80009217e+00,   9.88791886e+00,   1.74750501e+01,   5.38215565e+00, 
+           1.75814278e+01,   1.64927163e+01,  -7.22490057e-01,   1.59410372e+01,   1.21327342e+01, 
+           5.31684038e+00,   1.07398656e+01,   1.27687533e+01,   1.11831750e+01,   1.30396209e+01, 
+           1.78543512e+01,   1.53781269e+01,   1.74549497e+01,   1.69593034e+01,   1.25392544e+01, 
+           1.91056959e+01,   1.02634068e+01,   1.58723572e+01,   1.01017169e+01,   1.15340755e+01, 
+           2.42047249e+01,   8.82103648e+00,   1.74196163e+01,   2.71575865e+01,   1.42717489e+01, 
+           1.61565324e+01,   2.20042138e+01,   1.46526399e+01,   1.22238423e+01,   2.82739099e+01, 
+           1.32115234e+01,   2.28595316e+01,  -3.43176969e-01,   9.94990444e+00,   3.15261979e+01, 
+           7.17743425e+00,   1.79725272e+01,   2.66047961e+01,  -1.03202183e-01,   1.46786234e+01, 
+           2.03983934e+01,   6.75355215e+00,   1.21898998e+01,   2.68300650e+01,   1.28501206e+01, 
+           9.52256604e+00,   2.96146284e+01,   1.79253244e+01,   1.48734446e+01,   2.75889170e+01, 
+           7.84459536e+00,   2.04254604e+01,   2.29273727e+01,   1.86587003e+01,   1.36039471e+01, 
+           2.34500168e+01,   1.76328865e+01,   1.06667576e+01,   2.40841230e+01,   2.49370928e+01, 
+           1.38349803e+01,   3.01788493e+01,   2.19453967e+01,   1.96844070e+01,   2.17383789e+01, 
+           2.79207277e+01,   2.40109880e+01,   2.44652621e+00,   7.71232732e-01,   2.28150210e+01, 
+           4.44993033e+00,   6.32217106e+00,   2.86959872e+01,   6.16770811e+00,   2.54155030e+00, 
+           2.86295708e+01,   6.58513110e-01,   7.07847686e+00,   1.91416715e+01,   8.42657055e-01, 
+           1.09318699e+01,   2.21629487e+01,   3.26372053e+00,   1.85487891e+01,   2.42299255e+01, 
+           3.53057281e+00,   1.21895915e+01,   3.07759304e+01,   5.87270948e-01,   1.54581789e+01, 
+           2.21462069e+01,  -3.29544187e+00,   2.17376848e+01,   2.08019829e+01,   5.74042948e+00, 
+           2.91126306e+01,   2.82616387e+01,   4.12726443e+00,   2.38117939e+01,   2.48604110e+01, 
+          -9.81005677e-02,   2.75017597e+01,   2.19769526e+01,   9.55679072e+00,  -3.48501195e-01, 
+           2.15122044e+01,   1.35659683e+01,   4.45218017e+00,   2.70106862e+01,   1.84178475e+01, 
+           2.90258066e+00,   3.09038945e+01,   1.13784966e+01,   3.97619446e+00,   2.33776271e+01, 
+           1.09744756e+01,   9.48584489e+00,   2.30108491e+01,   1.65710971e+01,   1.59074187e+01, 
+           2.90437432e+01,   1.63990319e+01,   1.41164353e+01,   3.03675824e+01,   9.36100919e+00, 
+           1.59902897e+01,   2.19588417e+01,   9.65547975e+00,   2.31178969e+01,   2.07325650e+01, 
+           1.43025889e+01,   2.85076354e+01,   2.79531009e+01,   1.40545290e+01,   1.99579811e+01, 
+           2.86838426e+01,   1.23353706e+01,   2.65845766e+01,   2.36116501e+01,   2.56191152e+01, 
+           5.93663687e+00,   2.14810798e+01,   3.18962824e+01,   6.43104769e+00,   2.61566331e+01, 
+           3.11398548e+01,   2.04112055e+00,   2.78161522e+01,   2.39026490e+01,   3.29230633e+00, 
+           2.35872061e+01,   1.92586393e+01,   9.42997765e+00,   2.18868541e+01,   2.93005866e+01, 
+           1.56731672e+01,   2.57892309e+01,   3.08659127e+01,   1.04565213e+01,   2.89111102e+01, 
+           2.23973168e+01,   1.41543879e+01,   2.40352391e+01,   1.89355855e+01,   2.26713139e+01, 
+           2.60883570e+01,   2.53551683e+01,   3.10959184e+01,   2.56617570e+01,   2.53873006e+01, 
+           2.02938950e+01,   2.87914567e+01,   1.97522769e+01,   2.78202344e+01,  -1.76425983e+00, 
+          -1.53558560e+00,  -1.71338801e+00,  -9.78599968e-01,   6.87902421e+00,   7.88543588e+00, 
+           5.47881861e-01,   3.64324940e+00,   1.39468482e+00,   3.60000249e+00,  -9.28967610e-01, 
+           4.01716866e+00,   2.42995414e+00,   1.05628735e+00,   1.03627265e+01,   9.20694754e-01, 
+           4.29683694e+00,   1.64579850e+01,   6.19121450e+00,   7.68893688e+00,   1.23304998e+01, 
+           9.82833523e+00,   1.54814143e+00,   1.71545209e+01,   6.99417618e-01,   8.54622163e-02, 
+           2.48873966e+01,  -3.11309329e-01,   6.97214120e+00,   2.66220741e+01,   5.25625287e+00, 
+           7.68138067e+00,   2.39284370e+01,   6.25528626e+00,   3.07873577e+00,   3.00882100e+01, 
+           1.15270468e+00,   8.88014098e+00,   3.00512398e-01,   9.30446242e-01,   1.71408264e+01, 
+           3.50661823e+00,   5.83759203e+00,   1.72729331e+01,   3.34582087e-01,   5.40503488e+00, 
+           1.24459036e+01,   5.56073866e+00,   1.21588195e+00,   1.31551680e+01,   1.27378351e+01, 
+          -4.66813441e-01,   1.87703376e+01,   1.69486235e+01,   6.75076580e+00,   1.83449120e+01, 
+           1.48488718e+01,   9.47340998e+00,   1.17932793e+01,   1.67868142e+01,   6.10952151e-01, 
+           1.27008444e+01,   2.15901214e+01,   1.76087373e+00,   1.40248834e+01,   2.78953850e+01, 
+           6.51618548e+00,   1.72532108e+01,   2.04694567e+01,   7.36556309e+00,   9.99912211e+00, 
+           2.91964532e+01,  -7.06531579e-01,   2.27219694e+01,  -1.31954187e+00,  -1.54612461e+00, 
+           2.75038363e+01,   6.70572831e+00,   5.21401215e+00,   2.84508378e+01,  -1.38701455e+00, 
+           5.24874266e+00,   2.15644003e+01,   8.28914156e+00,  -2.21199280e+00,   2.06411930e+01, 
+           9.08490967e+00,  -3.69161804e-01,   2.79213183e+01,   1.67707124e+01,   5.77258212e+00, 
+           2.95534123e+01,   1.29379476e+01,   5.27372097e+00,   2.29618317e+01,   1.82846335e+01, 
+           5.50365226e-01,   2.32915342e+01,   2.26003508e+01,  -3.23975407e-01,   2.71026192e+01, 
+           2.69864390e+01,   5.25571146e+00,   2.84281121e+01,   2.43362803e+01,   4.19783582e+00, 
+           2.23458941e+01,   2.89351055e+01,   1.30027038e+01,  -2.89260409e+00,  -3.32667625e+00, 
+           1.24700611e+01,   5.45576814e+00,   6.79907186e+00,   1.69263149e+01,   5.70732090e+00, 
+           1.52975089e-01,   1.72152577e+01,  -5.86473536e-01,   2.60910235e+00,   1.39562777e+01, 
+           1.10496755e+00,   9.89893108e+00,   1.27550907e+01,   6.50405608e+00,   1.44860215e+01, 
+           1.84418079e+01,   6.98755864e+00,   1.14378627e+01,   1.73685838e+01,   1.03634629e+00, 
+           1.72542968e+01,   9.36166090e+00,   1.26996989e+00,   2.48970836e+01,   1.35415180e+01, 
+           4.84360499e+00,   2.82597230e+01,   1.28859648e+01,   7.62646315e+00,   2.08202186e+01, 
+           1.82323636e+01,  -1.58242560e+00,   2.82645654e+01,   9.67026415e+00,   9.99521608e+00, 
+           1.48323928e+00,   1.06202054e+01,   1.74410916e+01,   5.30476845e+00,   1.68915394e+01, 
+           1.66028258e+01,  -3.98602304e-01,   1.52286166e+01,   1.15951307e+01,   4.88875152e+00, 
+           1.16320855e+01,   1.18462368e+01,   1.17721604e+01,   1.30800856e+01,   1.72687237e+01, 
+           1.52362824e+01,   1.86182764e+01,   1.72413013e+01,   1.32638271e+01,   1.90927913e+01, 
+           1.01652528e+01,   1.60527418e+01,   9.59785151e+00,   1.16306603e+01,   2.32521891e+01, 
+           1.02733588e+01,   1.86418357e+01,   2.65319699e+01,   1.48920616e+01,   1.69296308e+01, 
+           2.24345192e+01,   1.44781142e+01,   1.16768928e+01,   2.87742833e+01,   1.26440243e+01, 
+           2.31651077e+01,   1.09153308e+00,   9.32620240e+00,   3.18068970e+01,   5.91156305e+00, 
+           1.82338682e+01,   2.68163992e+01,  -6.10171355e-01,   1.56193643e+01,   1.99596118e+01, 
+           8.12957661e+00,   1.34391603e+01,   2.79448176e+01,   1.21148599e+01,   9.90095353e+00, 
+           2.95224900e+01,   1.88551608e+01,   1.63687321e+01,   2.81729033e+01,   7.75414361e+00, 
+           2.11290647e+01,   2.30983265e+01,   1.80818117e+01,   1.22179830e+01,   2.36227246e+01, 
+           1.85352948e+01,   1.00736995e+01,   2.52569655e+01,   2.39704097e+01,   1.44179838e+01, 
+           2.90993728e+01,   2.15195489e+01,   1.95569595e+01,   2.20162082e+01,   2.86888343e+01, 
+           2.38790793e+01,   1.81853851e+00,  -8.62424353e-01,   2.30087081e+01,   3.67168316e+00, 
+           5.79906646e+00,   2.86237895e+01,   5.77923269e+00,   1.82976727e+00,   2.97992364e+01, 
+          -2.44824247e-01,   6.97483848e+00,   1.97479547e+01,   1.28907671e+00,   1.06238401e+01, 
+           2.22988651e+01,   3.36189040e+00,   1.99142865e+01,   2.56182622e+01,   4.87467917e+00, 
+           1.16104104e+01,   3.01052148e+01,  -1.89720612e-01,   1.52853202e+01,   2.30601562e+01, 
+          -3.37897609e+00,   2.20210883e+01,   2.21023714e+01,   7.37999253e+00,   2.99827770e+01, 
+           2.83970918e+01,   5.06217176e+00,   2.39324034e+01,   2.36552267e+01,   3.97689851e-01, 
+           2.70250248e+01,   2.32913517e+01,   1.10207360e+01,   7.64503581e-01,   2.00178673e+01, 
+           1.37487336e+01,   4.25542754e+00,   2.60455321e+01,   1.69122386e+01,   2.31534587e+00, 
+           3.04356904e+01,   1.25406626e+01,   5.17675092e+00,   2.38621411e+01,   1.14515762e+01, 
+           9.75443924e+00,   2.25731071e+01,   1.62345346e+01,   1.68317268e+01,   2.84171490e+01, 
+           1.69913568e+01,   1.42827468e+01,   2.97526886e+01,   9.31307649e+00,   1.67785293e+01, 
+           2.17762297e+01,   8.96916957e+00,   2.19718340e+01,   2.22594418e+01,   1.33823144e+01, 
+           2.81207945e+01,   2.77005814e+01,   1.50622075e+01,   2.05455699e+01,   2.92151641e+01, 
+           1.30044976e+01,   2.67938258e+01,   2.17064822e+01,   2.45224793e+01,   5.39644288e+00, 
+           2.09907797e+01,   3.13381910e+01,   6.65786528e+00,   2.44267241e+01,   2.96324924e+01, 
+           1.59248807e+00,   2.81352950e+01,   2.52179231e+01,   3.21255854e+00,   2.29984530e+01, 
+           1.94459863e+01,   9.90712637e+00,   1.95242101e+01,   2.89090489e+01,   1.59338674e+01, 
+           2.54944440e+01,   3.14856070e+01,   1.10580434e+01,   2.91399127e+01,   2.38737698e+01, 
+           1.47156065e+01,   2.36566327e+01,   1.94718712e+01,   2.27327251e+01,   2.67255132e+01, 
+           2.57714727e+01,   3.15584870e+01,   2.55546714e+01,   2.55331520e+01,   2.06608588e+01, 
+           2.85241759e+01,   1.96187079e+01,   2.95686729e+01,  -1.28506833e+00,  -1.19627373e+00, 
+          -1.11505578e+00,  -1.26613495e+00,   6.87769487e+00,   8.86664224e+00,   3.22672767e-01, 
+           3.60048900e+00,   1.75198909e+00,   3.39985912e+00,  -5.38113592e-01,   4.40630180e+00, 
+           2.05527629e+00,   1.04780310e+00,   1.09245524e+01,   1.64433825e+00,   5.07925261e+00, 
+           1.66693862e+01,   6.34528032e+00,   6.84652464e+00,   1.30553942e+01,   9.19503930e+00, 
+           1.02559973e+00,   1.64900202e+01,   1.50883393e+00,   1.94153184e-01,   2.60419984e+01, 
+           2.23637168e-01,   5.88126235e+00,   2.68151686e+01,   6.09330009e+00,   6.41359349e+00, 
+           2.27265508e+01,   5.20417493e+00,   3.02351860e+00,   2.90727542e+01,   5.22759441e-01, 
+           9.07723226e+00,   3.74357289e-01,   5.28407017e-01,   1.77876299e+01,   3.40818122e+00, 
+           4.77500246e+00,   1.61051931e+01,  -7.15798597e-01,   5.35494411e+00,   1.24396028e+01, 
+           5.26132317e+00,   3.65101881e+00,   1.45180281e+01,   1.20044556e+01,   6.47702685e-01, 
+           1.89647984e+01,   1.63575659e+01,   6.85886982e+00,   1.86666656e+01,   1.39918716e+01, 
+           9.63134562e+00,   1.21489398e+01,   1.79744053e+01,  -4.65149892e-02,   1.28820467e+01, 
+           2.20848030e+01,   5.38141652e-01,   1.49773108e+01,   2.86234466e+01,   6.69460622e+00, 
+           1.70430908e+01,   2.03293501e+01,   7.46084699e+00,   9.27068140e+00,   2.87672652e+01, 
+          -1.77446797e+00,   2.31007533e+01,  -1.61541146e+00,  -1.44197270e+00,   2.59669452e+01, 
+           7.05366958e+00,   6.78973516e+00,   2.82048010e+01,  -6.81707442e-01,   4.11224811e+00, 
+           2.33230735e+01,   7.64143788e+00,  -1.30932484e+00,   2.00341346e+01,   8.43186122e+00, 
+          -3.23227570e-01,   2.88456685e+01,   1.71869485e+01,   5.59484664e+00,   2.86861878e+01, 
+           1.38255153e+01,   5.39986151e+00,   2.26670663e+01,   1.74856853e+01,   1.31353338e+00, 
+           2.27240963e+01,   2.26573999e+01,  -6.43284767e-01,   2.75545414e+01,   2.65487243e+01, 
+           6.36781664e+00,   2.89591698e+01,   2.55204798e+01,   4.19690392e+00,   2.20492684e+01, 
+           2.90086623e+01,   1.29407803e+01,  -3.28971533e+00,  -3.59953707e+00,   1.30308691e+01, 
+           4.52526975e+00,   6.05334642e+00,   1.80200038e+01,   6.86934432e+00,  -6.64799107e-01, 
+           1.77004927e+01,  -1.08469207e+00,   2.66573197e+00,   1.33883962e+01,   1.77878946e+00, 
+           1.01478623e+01,   1.28332615e+01,   7.20488713e+00,   1.30030127e+01,   1.82890722e+01, 
+           5.45538575e+00,   1.26731818e+01,   1.64372459e+01,   1.13264799e+00,   1.68270761e+01, 
+           9.29480506e+00,   8.02789471e-01,   2.50004864e+01,   1.30397241e+01,   4.25942991e+00, 
+           2.82105770e+01,   1.34839369e+01,   6.59877473e+00,   1.96748658e+01,   1.90248344e+01, 
+          -7.34844927e-01,   2.61879859e+01,   1.06994814e+01,   1.04221404e+01,   1.19626201e+00, 
+           9.75063627e+00,   1.82675328e+01,   4.79479047e+00,   1.67169178e+01,   1.67708791e+01, 
+          -3.25796174e-01,   1.58140826e+01,   1.07514402e+01,   4.16021066e+00,   1.14190484e+01, 
+           1.20130431e+01,   1.10359921e+01,   1.23286945e+01,   1.73093633e+01,   1.60093426e+01, 
+           1.72472089e+01,   1.71555986e+01,   1.29595403e+01,   1.96515771e+01,   1.07779852e+01, 
+           1.55906451e+01,   1.04066011e+01,   1.06852174e+01,   2.41637389e+01,   9.33300851e+00, 
+           1.72769290e+01,   2.72366205e+01,   1.43344594e+01,   1.55444449e+01,   2.25613745e+01, 
+           1.54876710e+01,   1.23994150e+01,   2.77630051e+01,   1.24465157e+01,   2.22953455e+01, 
+           7.07224538e-01,   9.17225571e+00,   3.04541888e+01,   7.00444346e+00,   1.90451094e+01, 
+           2.68206460e+01,   2.12443190e-01,   1.40421608e+01,   2.16604155e+01,   8.76748146e+00, 
+           1.18599685e+01,   2.63467340e+01,   1.24514910e+01,   9.07508597e+00,   2.94452971e+01, 
+           1.81138604e+01,   1.65350863e+01,   2.76724408e+01,   8.10094240e+00,   2.03902238e+01, 
+           2.19891729e+01,   1.81613540e+01,   1.28241365e+01,   2.30836693e+01,   1.77077396e+01, 
+           1.07839643e+01,   2.43167076e+01,   2.35379387e+01,   1.43368823e+01,   2.99960368e+01, 
+           2.18020500e+01,   1.98836259e+01,   2.10543368e+01,   2.77564511e+01,   2.38873187e+01, 
+           2.63596088e+00,  -8.45710736e-01,   2.26031998e+01,   4.94875239e+00,   6.06483058e+00, 
+           2.72420930e+01,   7.16044030e+00,   2.03664724e+00,   2.83819926e+01,   1.41474271e+00, 
+           6.86956553e+00,   1.90297274e+01,   2.08547446e-01,   1.17356589e+01,   2.20093707e+01, 
+           3.11015561e+00,   1.84015708e+01,   2.55258414e+01,   4.51413195e+00,   1.15060640e+01, 
+           3.04420577e+01,   2.05350822e-01,   1.59037463e+01,   2.20766378e+01,  -3.08680082e+00, 
+           2.27928539e+01,   2.19423049e+01,   6.96063455e+00,   2.93175572e+01,   2.63580580e+01, 
+           4.17130592e+00,   2.37215427e+01,   2.48207538e+01,  -1.10022388e+00,   2.72061284e+01, 
+           2.27735841e+01,   1.10983539e+01,   5.03790539e-01,   2.05447311e+01,   1.35069355e+01, 
+           4.99617490e+00,   2.74249691e+01,   1.74389534e+01,   2.12313453e+00,   3.09387285e+01, 
+           1.30390672e+01,   4.56728163e+00,   2.49467870e+01,   1.09552706e+01,   1.05134177e+01, 
+           2.26330821e+01,   1.67053853e+01,   1.63758180e+01,   2.83218004e+01,   1.73740024e+01, 
+           1.40724154e+01,   3.02682616e+01,   8.35484609e+00,   1.66575388e+01,   2.13501708e+01, 
+           1.01994161e+01,   2.34754835e+01,   2.17794008e+01,   1.46632688e+01,   2.78344546e+01, 
+           2.68554005e+01,   1.40368100e+01,   2.04864069e+01,   2.79509647e+01,   1.19193324e+01, 
+           2.79392613e+01,   2.26582097e+01,   2.45440331e+01,   6.30616900e+00,   2.13859764e+01, 
+           3.08849664e+01,   6.44869190e+00,   2.64928749e+01,   3.02400532e+01,   8.32685758e-01, 
+           2.74640627e+01,   2.40967712e+01,   3.18770838e+00,   2.27412709e+01,   1.85562433e+01, 
+           9.23151490e+00,   2.03983609e+01,   2.91681800e+01,   1.56979455e+01,   2.51695730e+01, 
+           3.07717754e+01,   1.06821424e+01,   2.92168363e+01,   2.36456995e+01,   1.45948324e+01, 
+           2.33527556e+01,   1.93047064e+01,   2.37746530e+01,   2.48248533e+01,   2.61599136e+01, 
+           3.04541638e+01,   2.58041186e+01,   2.56474296e+01,   2.02610796e+01,   2.85417157e+01, 
+           1.88972442e+01,   2.98568715e+01,  -2.38586496e+00,  -7.58828968e-01,  -1.63156635e+00, 
+          -1.24260140e-01,   7.66170676e+00,   8.26519210e+00,   8.18582687e-01,   3.21215177e+00, 
+           8.71469426e-01,   3.32445560e+00,  -1.32118548e+00,   3.91101312e+00,   2.32046567e+00, 
+           1.58370834e+00,   1.07292588e+01,   1.33792245e+00,   4.76690685e+00,   1.57155304e+01, 
+           5.60070334e+00,   7.35450929e+00,   1.13291649e+01,   9.38118665e+00,   1.32457406e+00, 
+           1.64112640e+01,   2.06694803e+00,  -1.08774960e-01,   2.51995098e+01,   5.83962037e-01, 
+           6.14184963e+00,   2.60031487e+01,   7.65609079e+00,   5.60778423e+00,   2.29300579e+01, 
+           5.77114858e+00,   2.13679298e+00,   2.93327862e+01,   2.19806103e+00,   9.68222590e+00, 
+           1.57880111e+00,   3.14284164e-01,   1.73107320e+01,   3.17317841e+00,   5.31032205e+00, 
+           1.67722718e+01,  -3.21992890e-01,   4.86044703e+00,   1.46302272e+01,   6.21744347e+00, 
+           3.23194778e+00,   1.36053502e+01,   1.20906550e+01,   1.05401318e+00,   1.89924170e+01, 
+           1.86500989e+01,   7.28920551e+00,   1.90214147e+01,   1.48608421e+01,   8.94579137e+00, 
+           1.17939437e+01,   1.76451822e+01,  -2.16292241e-01,   1.27470176e+01,   2.10170183e+01, 
+           1.86340865e+00,   1.43620945e+01,   2.88854080e+01,   7.51715045e+00,   1.76892134e+01, 
+           2.12086589e+01,   7.40953137e+00,   8.90283609e+00,   2.82643224e+01,  -1.81615954e+00, 
+           2.35425566e+01,  -6.35391065e-01,  -1.81429720e+00,   2.64341698e+01,   6.21091555e+00, 
+           5.43254354e+00,   2.75836921e+01,  -9.47958758e-01,   4.71567619e+00,   2.21052659e+01, 
+           7.88771418e+00,  -1.66841626e+00,   2.04914383e+01,   8.26675658e+00,  -4.59229759e-01, 
+           2.71579580e+01,   1.68410204e+01,   5.00100432e+00,   2.90662447e+01,   1.29214242e+01, 
+           4.69089603e+00,   2.34759714e+01,   1.67656282e+01,   6.53854823e-01,   2.38352952e+01, 
+           2.17931036e+01,  -1.01639060e+00,   2.72103570e+01,   2.59664262e+01,   4.89596274e+00, 
+           2.77674695e+01,   2.47617265e+01,   3.70839276e+00,   2.19495406e+01,   2.77068507e+01, 
+           1.33883490e+01,  -2.96774368e+00,  -3.88662826e+00,   1.21540528e+01,   4.88520987e+00, 
+           6.46250715e+00,   1.58502434e+01,   7.52061809e+00,  -5.94010768e-01,   1.80041063e+01, 
+          -1.45785510e+00,   1.90361473e+00,   1.37682126e+01,   1.01096461e+00,   1.05140180e+01, 
+           1.32426632e+01,   7.30651107e+00,   1.44595448e+01,   1.87287975e+01,   5.98649586e+00, 
+           1.22746034e+01,   1.63100152e+01,   1.15741871e+00,   1.66981121e+01,   9.12913654e+00, 
+          -2.92667679e-01,   2.45886138e+01,   1.33050334e+01,   3.97377478e+00,   2.69467178e+01, 
+           1.42080442e+01,   6.64595078e+00,   2.01191284e+01,   1.86015542e+01,  -1.75336417e+00, 
+           2.83471787e+01,   1.08620615e+01,   1.11988186e+01,   1.95253365e+00,   9.45047887e+00, 
+           1.75938537e+01,   4.23821913e+00,   1.70208034e+01,   1.60108143e+01,  -1.22190668e+00, 
+           1.50766040e+01,   1.12165304e+01,   5.43990155e+00,   1.09933699e+01,   1.22850779e+01, 
+           1.16546326e+01,   1.23781385e+01,   1.80369686e+01,   1.53125056e+01,   1.73516609e+01, 
+           1.75785987e+01,   1.18313796e+01,   1.94046667e+01,   1.10166421e+01,   1.62979612e+01, 
+           9.66207941e+00,   1.08458701e+01,   2.37048314e+01,   8.44004940e+00,   1.70203943e+01, 
+           2.65757559e+01,   1.43027170e+01,   1.63790927e+01,   2.18182624e+01,   1.38144113e+01, 
+           1.12481654e+01,   2.87113704e+01,   1.23513270e+01,   2.18980717e+01,   5.17961694e-01, 
+           9.82158593e+00,   3.06003668e+01,   6.40959927e+00,   1.97382355e+01,   2.64666452e+01, 
+          -2.56886470e-01,   1.51138569e+01,   2.14756928e+01,   7.69843726e+00,   1.13280462e+01, 
+           2.53724470e+01,   1.17891597e+01,   9.16645548e+00,   2.85470480e+01,   1.83229821e+01, 
+           1.60641629e+01,   2.74309208e+01,   8.14336993e+00,   2.00104262e+01,   2.16691335e+01, 
+           1.90509791e+01,   1.35353858e+01,   2.30944654e+01,   1.79157296e+01,   1.01235942e+01, 
+           2.45385866e+01,   2.35448360e+01,   1.40749201e+01,   3.01972078e+01,   2.17768651e+01, 
+           2.03786050e+01,   2.10805498e+01,   2.76935947e+01,   2.44615615e+01,   3.05749628e+00, 
+           4.07414296e-01,   2.16336438e+01,   4.40657970e+00,   5.21060398e+00,   2.88299726e+01, 
+           7.01128437e+00,   8.79026008e-01,   2.85241186e+01,   3.14915946e-01,   7.07809470e+00, 
+           1.98625917e+01,   4.50200492e-03,   1.15863909e+01,   2.29376845e+01,   2.50348240e+00, 
+           1.86113050e+01,   2.47645618e+01,   3.74984924e+00,   1.16835156e+01,   3.00116656e+01, 
+           1.33610084e+00,   1.54039934e+01,   2.16664404e+01,  -3.77318264e+00,   2.24073626e+01, 
+           2.17213138e+01,   6.32154759e+00,   2.91289015e+01,   2.80778040e+01,   4.04768899e+00, 
+           2.51637272e+01,   2.49482621e+01,  -1.80258150e+00,   2.77649841e+01,   2.28639670e+01, 
+           9.52095023e+00,   1.12320744e+00,   2.11060298e+01,   1.35966775e+01,   4.52804356e+00, 
+           2.65933190e+01,   1.74870802e+01,   3.12917456e+00,   3.12581554e+01,   1.26369216e+01, 
+           4.24969839e+00,   2.28577555e+01,   1.09623135e+01,   9.61329928e+00,   2.31292240e+01, 
+           1.68635673e+01,   1.59562582e+01,   2.83134554e+01,   1.65993286e+01,   1.34061062e+01, 
+           3.07651009e+01,   8.60937322e+00,   1.58164516e+01,   2.15713342e+01,   9.77426434e+00, 
+           2.38239983e+01,   2.07170028e+01,   1.44272471e+01,   2.72915473e+01,   2.78094878e+01, 
+           1.46067375e+01,   2.02374654e+01,   2.83102299e+01,   1.21902457e+01,   2.73283465e+01, 
+           2.25040436e+01,   2.40201181e+01,   7.24105767e+00,   2.16659528e+01,   3.22281603e+01, 
+           6.56727556e+00,   2.67438472e+01,   3.14254999e+01,   1.00941523e+00,   2.72477648e+01, 
+           2.43062679e+01,   3.91537815e+00,   2.28206020e+01,   1.90617248e+01,   9.50661026e+00, 
+           1.95693791e+01,   2.99400820e+01,   1.67827219e+01,   2.52432494e+01,   3.09283864e+01, 
+           1.18433291e+01,   3.02997758e+01,   2.26469178e+01,   1.40818435e+01,   2.52061280e+01, 
+           1.93512323e+01,   2.29021542e+01,   2.65208970e+01,   2.53952117e+01,   3.08512322e+01, 
+           2.76076800e+01,   2.54724293e+01,   1.95719692e+01,   2.94254771e+01,   1.94406409e+01, 
+           2.73992646e+01 ]
+      </q>
+      <p shape='(4, 324)'>
+       [   1.40372994e-01,  -1.70336384e+00,   6.37303020e-01,  -3.60483257e-01,  -1.10940109e+00, 
+           3.74869623e-01,  -3.25735029e-01,   7.75472220e-01,   1.10757231e+00,  -2.40493336e+00, 
+          -1.53716651e+00,   1.37041429e+00,   5.28228491e-01,   1.38616874e+00,  -1.38581237e+00, 
+          -3.77690596e-01,   2.35773187e-01,   1.37036828e+00,   1.74363360e+00,   1.46668252e+00, 
+           9.19554977e-01,   1.46604384e+00,   7.17395153e-01,   1.16766357e+00,   5.74213643e-01, 
+           1.73367931e-01,  -1.66161161e+00,   2.33212598e+00,  -9.77285003e-01,   2.41575083e-01, 
+          -1.49585940e-01,  -1.18522916e+00,   1.58553462e-01,  -1.47168505e+00,  -1.24387557e+00, 
+           7.68483391e-01,  -1.56677579e+00,   8.39149463e-01,  -7.60108832e-01,  -1.39563512e-01, 
+           1.23618455e+00,  -3.39699359e-01,  -9.88358452e-01,  -1.25161119e+00,   5.75688958e-01, 
+           3.34908289e-02,  -1.57137545e+00,   9.54873978e-01,   2.21048523e-01,   3.15471131e+00, 
+           4.38424417e-01,  -1.41296551e+00,  -6.15293784e-01,   4.54568031e-01,   5.25912190e-01, 
+           1.10462750e+00,  -7.33687512e-01,   3.51836732e-01,   1.11696908e+00,  -1.75519514e-01, 
+          -9.87401261e-01,  -1.00224818e+00,  -2.06257599e+00,  -8.69995365e-02,   1.96237139e-01, 
+          -1.55878661e+00,   2.06187113e+00,   5.21020731e-03,   2.35617406e-01,   1.59018004e+00, 
+           1.23310143e+00,  -9.06287741e-01,   1.02772014e+00,  -4.13278400e-01,  -9.73895321e-01, 
+           1.26420822e+00,  -6.00372594e-02,  -8.86889397e-01,  -1.35877237e+00,   1.26542138e-01, 
+          -1.96996606e+00,   1.16602982e+00,  -1.87715811e+00,  -1.07989580e+00,   1.52684255e-01, 
+           2.69202324e+00,  -7.86764932e-01,  -1.26792145e+00,  -2.15985504e-01,   2.83847115e-01, 
+          -3.90074815e-02,  -3.21827572e-01,   8.60927158e-01,   1.15174374e+00,  -1.06395947e+00, 
+           6.56206723e-01,   1.71687653e+00,   1.88094551e+00,  -1.41246651e-01,   6.67235507e-01, 
+           8.02729512e-01,  -5.99750938e-01,   3.86175582e-01,   1.56674025e+00,   1.16770355e-01, 
+          -1.25058894e-01,  -6.64317179e-01,  -1.90732529e+00,  -3.49443824e-01,  -1.75313244e+00, 
+          -8.93802373e-01,  -8.38911513e-02,  -3.54765784e+00,   3.29189169e-01,  -1.59470714e+00, 
+           2.28214169e-01,  -2.04640475e+00,  -1.21363021e+00,   4.43956386e-01,   1.98553407e+00, 
+          -6.41921427e-01,   8.31610867e-01,   2.37729074e-01,  -1.96307860e+00,   5.83519443e-01, 
+          -9.23373803e-01,  -2.72733993e-01,  -6.80313749e-01,  -4.21629881e-01,   8.24112349e-02, 
+          -2.02945940e-02,   4.70239760e-02,  -8.87189426e-01,   2.62362546e-01,   2.90567277e-03, 
+          -5.77088646e-01,   8.63734028e-01,   2.12881273e-01,  -1.84398318e+00,  -1.27537888e+00, 
+          -8.96390165e-01,   8.67723220e-01,  -7.13233254e-01,   9.98467053e-01,   1.20471615e+00, 
+           3.80364988e-02,  -3.86066496e-01,   2.80482433e-01,  -5.55953973e-01,   6.99483364e-01, 
+          -6.20862722e-01,  -5.75941665e-01,  -1.01810316e+00,   6.59129210e-01,   3.36528627e-01, 
+           1.19657571e+00,   1.16325245e+00,   1.38231876e+00,  -1.62296272e+00,   7.73325492e-01, 
+           9.07953738e-01,  -1.56020700e+00,   5.91276288e-01,  -1.45072710e+00,   3.06498507e-01, 
+           1.02001412e+00,  -7.79180574e-01,  -1.09202701e+00,   8.60608247e-01,  -8.12517020e-01, 
+          -3.29732754e-01,   7.95824769e-02,  -3.53180396e-01,  -6.92843090e-01,   8.08287670e-01, 
+          -1.31368002e+00,   8.92275005e-01,   7.74460553e-01,  -4.16315357e-01,   4.13327475e-01, 
+           2.07077192e-01,  -2.18589769e+00,  -1.02281048e-01,   9.09167509e-02,  -1.46835347e+00, 
+           1.23256338e+00,  -3.07250057e-01,   2.46249432e-01,   7.74791555e-01,   3.98298680e-01, 
+          -5.39569195e-02,   4.73911005e-01,   1.79978269e+00,   6.49413046e-01,   1.44049305e+00, 
+          -7.54136523e-01,   6.85251391e-01,  -1.03401786e+00,  -1.07121945e+00,   1.15101429e+00, 
+          -6.78252322e-01,   3.66963136e-02,  -1.11945652e-01,  -4.17808375e-01,   9.68133746e-02, 
+           1.99069757e+00,   1.55013114e+00,  -1.92882805e-02,   1.33795454e+00,   7.39452603e-01, 
+           3.77633950e-01,   1.81163711e+00,   2.58943819e+00,   1.29562203e+00,  -1.48713547e+00, 
+          -9.55424888e-01,   3.46515063e-01,   4.16880974e-01,  -1.14430760e+00,  -5.41540342e-01, 
+           1.15617781e+00,  -8.15311978e-01,  -1.24131679e-01,  -1.01785991e+00,  -6.82587363e-01, 
+           1.34485087e+00,   3.95295976e-01,   3.61637052e-01,  -4.79290805e-01,   1.96407902e-02, 
+          -6.96427808e-01,   9.65717585e-01,   4.63130635e-01,  -4.12348950e-02,  -6.14114134e-02, 
+           3.76909298e-01,   1.31464930e-01,  -1.96943568e+00,  -2.07138054e+00,   1.07506895e+00, 
+          -8.47693792e-02,   1.50838082e+00,   9.66357898e-01,   3.29832625e-02,   2.53592195e+00, 
+          -8.44613584e-01,  -1.75528218e-01,  -1.51432281e+00,  -1.30241164e+00,  -2.07575407e-01, 
+          -1.04844306e+00,  -1.28575451e+00,   4.62727941e-01,   1.46590141e+00,  -2.63004766e-01, 
+          -1.01898113e+00,  -1.37875255e+00,  -9.12918530e-01,   1.71033710e+00,   1.02893180e+00, 
+          -1.32634968e+00,   8.82495711e-02,  -9.11997611e-01,  -2.42094019e+00,  -6.29467944e-01, 
+           8.08788619e-01,   1.94804910e+00,  -8.72566500e-01,   9.20033720e-01,  -1.72884793e+00, 
+           3.44191186e-01,   1.21733557e+00,   1.87515471e-01,   5.10808988e-02,   7.94329477e-01, 
+          -3.52316495e-01,  -1.00945167e+00,   7.35146276e-01,   1.07654301e+00,   1.04930155e+00, 
+          -1.85826022e+00,  -5.07927804e-01,  -9.80771494e-01,  -3.21767737e+00,  -1.49676613e-01, 
+          -2.15647041e-01,  -1.82770370e+00,   1.49469246e+00,  -1.68826911e+00,   1.62663223e+00, 
+          -3.48742295e-01,  -6.17863065e-01,  -8.81308520e-01,   7.44925882e-01,   1.73070837e+00, 
+          -1.28410488e-01,   8.64089144e-01,   3.26440658e-01,   1.10448379e+00,  -1.69522830e-01, 
+          -6.53776497e-01,   3.81864979e-01,  -1.07760135e+00,  -3.98562627e-01,   5.38128157e-01, 
+          -2.29754635e-01,  -2.33407869e+00,  -1.25116856e-01,  -1.21131987e+00,   1.08298393e+00, 
+           1.51546625e-01,  -3.56701517e-01,  -9.98362812e-01,   1.03306121e-01,  -4.42120758e-01, 
+          -3.94015959e-02,  -8.12077182e-01,  -5.72762073e-01,  -8.31013031e-01,  -1.16147494e+00, 
+          -7.35897383e-02,  -1.09398682e-01,  -1.40219599e+00,   9.63041766e-01,   6.60583424e-02, 
+          -1.71857732e+00,   1.99405396e-01,  -8.84068189e-01,  -2.18819685e-01,   2.21366910e+00, 
+          -1.84460428e+00,  -1.05848347e+00,  -1.53731311e+00,  -2.25141079e-01,   8.55239543e-02, 
+          -5.64991535e-01,  -1.11243253e+00,  -1.48334114e+00,   2.85484662e-01,  -5.98357857e-01, 
+          -5.62005083e-01,   5.18476929e-02,   7.20785662e-01,  -9.21464830e-01,  -4.17295452e-01, 
+          -7.06470111e-01,  -2.07423207e+00,  -2.82738840e-01,  -7.05765425e-01,   5.71154019e-01, 
+           1.41402308e+00,   7.15224885e-01,  -9.01571406e-01,  -1.78966537e-01,  -9.57855925e-01, 
+           1.92815188e+00,   3.67644067e-01,  -7.77398627e-01,   3.75573158e-01,  -1.27570871e+00, 
+          -1.56269598e-01,  -1.20126128e+00,   5.64996896e-01,  -1.45388556e+00,  -4.64414199e-01, 
+           1.88714704e+00,   1.47969578e+00,  -1.96063537e-01,   5.18755530e-01,   2.68937808e+00, 
+          -1.69730122e+00,  -5.36576005e-01,   1.04962410e+00,   4.65512668e-01,   1.47912174e+00, 
+           8.46469352e-01,   8.08058567e-01,   1.13879268e+00,   6.34831145e-01,   1.43535434e+00, 
+           2.04580992e+00,   7.90686500e-04,   1.19722827e+00,  -1.42644546e+00,   1.92405610e-01, 
+           8.14926140e-02,  -2.36223884e-01,   1.16089456e+00,   2.24765430e-01,  -1.32752285e+00, 
+           1.36642599e+00,  -5.36742312e-01,   4.98821954e-01,   6.00651182e-01,  -2.56801229e+00, 
+          -2.36250226e-01,  -8.57842968e-01,  -3.00915036e-01,   2.41807890e+00,   7.24711670e-01, 
+           1.36799087e+00,  -1.78428862e-01,  -3.59900038e-01,   3.42306822e-01,  -3.98271527e-01, 
+          -1.30912096e-01,  -5.36751004e-01,  -6.45495166e-01,   3.16360509e-02,  -6.38708513e-01, 
+           1.33860162e+00,   7.16436859e-01,   8.83639989e-01,  -2.87900422e-01,  -1.77363177e-01, 
+           1.75217790e-01,  -2.41654433e+00,  -8.13755792e-02,  -7.71741152e-01,   1.33456387e+00, 
+          -5.10830196e-01,  -1.10584683e+00,  -1.31689363e+00,   1.17583053e+00,   6.77964594e-01, 
+           2.99895744e-01,   5.12719967e-01,   2.06867244e+00,  -2.89182146e+00,   1.84494668e+00, 
+           3.10415200e-01,   1.64179666e+00,  -2.18044104e+00,  -9.27575571e-01,  -8.07814665e-01, 
+          -1.85157068e-01,   5.86693996e-01,   1.60605927e+00,  -1.03758631e-01,  -9.65958485e-01, 
+          -9.06979038e-01,   5.61735019e-01,   3.35132784e-01,   6.02021180e-01,   1.76689554e-01, 
+          -3.36488706e-02,   1.45021360e+00,   6.70122973e-01,  -1.71792295e-01,   8.29616451e-01, 
+          -8.05614322e-01,  -2.58079407e+00,   1.01873565e+00,  -3.81060235e-01,   1.00130704e+00, 
+           1.55674172e+00,   2.02125219e+00,  -7.48802492e-01,   1.06649929e+00,  -9.65493892e-01, 
+          -3.98926995e-01,   1.08567030e+00,  -1.04009627e+00,   1.41394914e+00,   1.80976669e+00, 
+          -4.38932124e-01,  -9.96116646e-01,   2.93325605e+00,  -2.65850173e+00,  -2.86627210e-01, 
+          -1.13380351e+00,   1.01776593e+00,   3.82798024e-01,  -2.03015905e+00,  -4.77705377e-01, 
+          -1.52497126e-01,  -3.08097496e-01,  -1.22388367e+00,   7.72589230e-01,  -1.18620576e+00, 
+           7.03396905e-01,  -6.07914021e-01,   1.36665589e+00,   3.05885200e-01,   8.68021103e-01, 
+           7.85645067e-01,   6.86344886e-01,   6.60054397e-02,   6.72872685e-01,  -1.72147672e+00, 
+          -3.35687107e-01,   6.40280686e-01,   1.90765562e-01,  -1.19759420e+00,   3.98723557e-01, 
+           1.01300503e+00,   3.15092859e-01,  -7.48716523e-01,  -6.31490429e-01,   5.03478302e-01, 
+          -7.97737020e-01,  -3.64328563e-01,  -6.84865111e-01,  -5.96889804e-01,   8.97320299e-01, 
+          -2.74447207e-01,   8.96041854e-01,   8.62447243e-01,   1.14171036e+00,   1.89620219e+00, 
+          -2.03086042e-01,   1.21863991e+00,  -7.08332672e-01,   8.65474351e-01,   8.84794271e-02, 
+          -7.38048949e-01,  -3.29738572e-01,   6.25639096e-01,   8.73860305e-01,   1.32892575e+00, 
+          -1.08731164e+00,   7.42722680e-02,   1.10376262e+00,  -2.70446460e-01,   4.84230480e-01, 
+          -7.49397372e-01,  -1.22773789e-01,  -1.73175160e+00,   1.00419017e+00,   4.18612640e-01, 
+          -1.19265354e+00,   1.89942453e+00,   2.16924392e-01,   1.98456504e+00,  -4.47127896e-02, 
+          -8.13751338e-01,  -1.57721515e+00,  -1.51087464e+00,   1.49149818e-01,   3.34518489e-01, 
+          -1.49643992e+00,   3.14649899e-01,   2.07634343e+00,  -6.04070136e-01,   1.87721508e+00, 
+          -4.06863898e-01,  -7.83918757e-01,   2.03531050e-01,  -7.64354284e-02,   3.31824344e-01, 
+           4.79012974e-01,   1.83535358e+00,   9.02286124e-01,  -1.15207026e+00,   1.28672254e-01, 
+          -8.26157812e-01,   1.90407166e+00,  -3.96264466e-01,   1.94392469e-01,  -8.73100373e-01, 
+          -3.37468953e-03,   9.76466097e-01,   6.23291758e-02,  -2.37497472e-01,   1.07993508e+00, 
+          -3.14201676e-01,   1.70621222e+00,  -9.90965410e-02,   1.20753777e-01,  -6.38441546e-01, 
+           1.41774776e+00,  -5.80882309e-01,   1.09405908e+00,   3.93716017e-01,  -1.28958167e+00, 
+           4.24488630e-01,   9.55061213e-01,   1.29635151e+00,  -1.96475095e-01,   1.27366715e-01, 
+           1.13693192e-01,  -1.99660506e+00,  -7.38934810e-01,   1.27623410e+00,   1.67534486e+00, 
+           2.98512870e-01,   1.48183369e+00,   1.03842506e+00,  -1.05881112e+00,   3.59296217e+00, 
+           2.33641006e+00,  -4.44058636e-01,  -7.05099765e-02,   3.21036779e-01,  -1.92001349e-01, 
+          -1.42762638e+00,  -4.05688476e-01,   4.80851634e-01,   4.74839401e-01,   1.26185094e+00, 
+          -1.05552598e-01,   5.56910980e-01,  -5.32621114e-01,   9.34349181e-02,   2.56314544e-01, 
+          -1.74582311e+00,   4.17470989e-01,   2.29528051e+00,   2.62392322e-01,   3.18772657e-01, 
+           8.17214811e-01,  -8.16325438e-01,  -4.19774898e-01,  -1.79953350e-02,   2.52742913e+00, 
+          -2.79795924e-02,  -8.35211211e-01,  -3.49992939e-01,   1.17976432e+00,   1.06455248e+00, 
+           4.99693771e-01,  -3.25404106e-01,  -1.19518002e+00,  -1.12107657e+00,   7.08571829e-01, 
+          -1.32836392e+00,  -4.05940531e-01,  -1.62901886e+00,   1.94474528e-01,   5.69560181e-01, 
+          -1.16097389e+00,  -9.55882892e-01,   8.43738270e-01,   9.60068854e-01,   3.04930133e-02, 
+           1.09691130e-01,   5.31002976e-01,  -7.96127056e-02,  -2.90684090e-02,  -2.90427758e-01, 
+           6.26093036e-01,   6.57694112e-01,  -4.85835995e-01,   1.80074318e-01,   1.12303284e+00, 
+           5.23912334e-01,   5.85300514e-01,   6.21565032e-01,  -6.88438319e-01,   1.76104297e+00, 
+           4.69681129e-01,  -1.50756131e+00,  -2.35433970e+00,   2.20926618e-01,  -1.59035655e+00, 
+          -2.16680752e-01,  -1.09766225e+00,  -3.66108880e-01,   6.72549669e-01,  -1.39966389e+00, 
+          -2.64964223e-01,  -4.47757200e-01,   5.31233808e-01,   1.84834139e+00,  -6.02818313e-01, 
+          -1.44473483e+00,   1.52776447e-02,  -7.93366554e-01,  -1.90159337e+00,   1.74463595e-01, 
+          -2.11499652e+00,  -2.25655780e+00,   1.18038845e+00,  -3.70794733e-01,  -8.67093500e-01, 
+           1.43290672e+00,  -1.38210097e-01,   1.14792213e+00,   1.06670774e+00,   1.03103438e+00, 
+          -9.00433225e-02,  -5.34357708e-01,  -1.22908335e+00,  -4.72611965e-01,   2.46111190e-01, 
+          -1.70561610e+00,   3.92682358e-01,  -1.55756928e+00,  -2.37928227e-01,   2.03059408e+00, 
+          -9.84120137e-01,  -2.11053290e+00,   6.16981710e-01,  -1.12243752e-01,  -1.10029159e-02, 
+           9.02048435e-01,   8.56294718e-01,   1.13642549e+00,  -1.50782750e+00,  -3.72301949e-01, 
+          -1.66280307e+00,  -1.38174795e+00,   8.97950650e-02,   5.55623559e-01,  -6.05980874e-01, 
+          -7.05479352e-01,   7.04832792e-01,  -3.20169261e-02,  -5.46153623e-01,  -4.23996939e-01, 
+          -1.87522120e+00,  -4.41626784e-01,   2.28022755e+00,   1.41852748e+00,   7.22573260e-01, 
+           2.28863935e+00,   1.32648450e+00,  -1.20732385e+00,   6.48320570e-01,  -5.97367023e-02, 
+           1.26207462e-01,  -2.04798081e+00,   1.13007921e+00,  -1.71585140e-01,   3.14833129e-02, 
+           1.71558970e-01,   2.30236146e-01,  -2.69742619e+00,   1.36832193e+00,  -4.09947214e-01, 
+          -2.00570514e-01,   8.31050179e-01,   1.40744357e+00,  -2.34268444e+00,  -7.42098732e-03, 
+           1.03611120e+00,   2.06373254e+00,  -5.02279592e-01,  -7.01081635e-01,   1.25847835e-01, 
+           6.02231279e-02,  -4.08815632e-01,  -3.34433187e-01,   1.42676664e+00,  -1.49454672e+00, 
+          -1.24564490e+00,   1.71269292e+00,   6.82206821e-01,   8.72601070e-01,  -9.22460387e-01, 
+           4.55740724e-02,   1.33030508e+00,   6.53585708e-02,   3.13993497e-01,  -2.11648823e+00, 
+          -1.36475580e-02,   2.51552262e+00,   9.25969768e-01,  -6.52019962e-01,   2.03940799e+00, 
+           2.55910092e-01,  -7.26525412e-01,  -1.00207723e+00,   1.31950793e+00,  -1.82967630e+00, 
+          -4.92805660e-01,   4.07867808e-01,   6.11026922e-02,  -2.11979237e-01,  -2.87253727e-01, 
+           1.11856203e+00,  -2.21720426e-01,   1.84350017e+00,   7.84784426e-01,  -1.49696700e+00, 
+           9.09038266e-01,  -1.27156936e+00,   9.56717220e-02,  -4.15656486e-01,   4.19788418e-01, 
+          -2.61691637e-01,  -1.56861006e+00,  -6.47659675e-01,  -6.83293713e-01,   2.51621894e+00, 
+          -4.44034798e-01,   1.78185380e+00,   4.60785269e-01,  -2.68311726e-01,   1.04600391e+00, 
+          -5.67576324e-01,   1.13507042e+00,  -1.78393940e+00,  -1.82719464e+00,  -1.84508388e+00, 
+          -1.29303124e+00,   1.35664029e+00,  -9.17173260e-01,   9.85863915e-01,   1.07223755e+00, 
+           8.84707496e-01,  -1.37852063e+00,   6.19459586e-01,  -2.93677966e-02,  -3.18737198e-01, 
+           1.03094159e+00,   4.89778531e-01,   1.73667810e+00,  -2.03090079e-01,   3.64701299e-01, 
+           3.48172075e-01,  -1.54091587e+00,   1.04498049e+00,  -1.28639737e+00,  -4.71319136e-01, 
+           8.61169102e-01,   1.61610909e+00,   7.69597251e-01,   7.68227380e-01,   1.11224694e+00, 
+           8.48919769e-01,   3.12294367e-01,  -4.93201021e-01,   6.42746189e-01,  -2.27293413e-01, 
+           2.16505068e-01,   5.52193787e-01,  -1.76108774e+00,  -4.43454137e-01,  -1.10836243e+00, 
+           7.49078941e-01,  -5.26434049e-02,   4.23300776e-01,  -1.66554395e+00,   3.10524219e-01, 
+           1.19480829e+00,  -6.29200409e-01,   6.41552685e-01,   7.60530128e-01,  -1.44429069e+00, 
+          -2.98038448e-01,   5.01177628e-01,   3.97341120e-01,   4.53467676e-01,  -1.35725377e+00, 
+           9.43314195e-01,   2.15143758e+00,   3.94302672e-01,   2.26509780e-01,   9.59313828e-01, 
+          -1.66404768e-01,   1.65207595e-01,  -2.39340233e+00,   3.14543001e+00,   1.05218765e+00, 
+          -8.14714579e-01,  -3.05710147e-01,  -1.74531477e+00,  -3.64151538e-01,  -2.09140760e-01, 
+           2.23739053e+00,   6.09477113e-01,   1.16899879e+00,   5.92967924e-01,  -8.17673149e-01, 
+          -1.10420428e+00,   4.65350290e-01,   2.11023040e-03,   8.14863971e-01,   1.08315984e+00, 
+          -7.25860590e-02,  -4.59896403e-01,   1.38164252e+00,   5.89336792e-01,   1.34519891e+00, 
+          -3.63277304e-01,   9.08232031e-01,   2.05775821e-01,   1.01268871e+00,   2.25900629e-01, 
+           1.11195741e+00,   1.46383492e+00,   1.15712737e+00,   1.37285918e+00,  -3.27123406e-01, 
+           2.10121867e+00,   3.63728898e-01,  -9.64451543e-01,   7.50304023e-02,   2.26045537e+00, 
+          -1.07848463e-01,  -5.55058232e-01,   6.46210385e-01,  -3.82173868e-01,   1.02724203e+00, 
+           4.75226625e-01,   2.63486832e-01,  -1.87720616e-01,   2.66714045e+00,  -1.37046410e-01, 
+          -9.47273326e-01,  -2.21070556e+00,   5.16910020e-01,  -1.00019802e+00,  -6.10344773e-01, 
+          -1.23626760e-01,  -7.78025616e-01,   3.54873800e-01,   1.32409224e+00,  -4.96383871e-01, 
+          -8.45650299e-01,  -7.06777204e-01,   7.74296088e-01,   5.40594697e-01,  -2.35323920e+00, 
+           1.10574355e+00,  -2.71490739e-01,   3.89486537e-01,  -2.25716891e+00,   1.08161436e+00, 
+          -7.61396029e-01,  -6.43902282e-01,   2.07071361e-01,  -1.24311778e+00,   1.66718154e+00, 
+          -1.12540846e+00,   4.04848060e-01,   9.82172410e-01,  -2.22704668e-01,  -4.41651091e-01, 
+           8.11339257e-01,  -1.71211605e+00,  -6.16208091e-02,   8.56110168e-01,   5.66390166e-01, 
+           6.39785155e-01,   1.39973994e+00,  -6.88244744e-01,   2.42634138e+00,   3.24544610e-01, 
+           4.48313772e-01,   7.45142689e-01,  -7.23045807e-02,   1.83704141e-01,  -1.47171323e+00, 
+          -7.09077372e-01,  -6.01038702e-01,  -8.75281454e-01,   5.13919915e-01,  -6.60822470e-01, 
+          -1.43487765e+00,   7.49938057e-01,   2.83635875e-01,   3.07045512e-01,   1.48936195e+00, 
+          -2.17046249e-01,   2.04101206e+00,   6.02181940e-01,  -1.78421830e-01,  -8.17580831e-01, 
+           6.13386299e-01,   1.46247756e-01,  -1.42514706e+00,  -1.93940896e+00,  -8.65275710e-01, 
+           1.47462311e-01,  -4.02301576e-01,  -9.63675890e-01,  -1.84120948e+00,   8.14102917e-01, 
+           3.80760496e-01,   3.25900148e-01,  -4.87843594e-01,  -1.03508268e+00,   3.57676231e-01, 
+          -6.47622001e-01,   2.14181936e+00,  -3.34827796e-01,  -8.07284435e-01,  -8.49708166e-01, 
+          -8.31736592e-01,   6.33904552e-01,   4.35249821e-01,  -9.13698624e-01,  -2.96290563e-01, 
+           3.77906357e-02,  -1.16936544e+00,  -3.14920460e-03,  -1.18537362e+00,   2.99624644e-01, 
+           1.76247250e+00,  -6.49375825e-01,  -1.89211809e-01,  -1.00974570e+00,   1.47455608e+00, 
+           1.72728137e+00,   2.18072141e+00,  -7.62571173e-01,  -1.23504812e+00,   2.14290218e-01, 
+          -7.46888683e-01,   5.53627395e-01,  -7.82076567e-03,   1.56933507e+00,   1.07155739e+00, 
+          -6.42903166e-01,  -9.85900335e-01,  -6.31873346e-01,  -9.85430080e-01,   3.97933623e-01, 
+          -2.07587828e+00,   2.76612669e-01,  -1.22060249e+00,  -2.25139829e-01,   1.80572908e+00, 
+          -5.58028004e-01,  -8.45859723e-01,  -1.30829100e+00,  -1.65904870e+00,  -9.78603426e-01, 
+          -3.70256932e-01,   6.40194479e-01,   1.29842617e+00,   5.79764541e-01,  -2.18955795e+00, 
+          -6.34491122e-01,   2.83457214e-01,   2.71316544e-01,   5.79996139e-01,  -1.90426727e+00, 
+          -2.20898199e+00,   5.67839219e-01,  -1.04623710e+00,   1.01192986e+00,   1.18567472e+00, 
+          -1.73342893e+00,  -2.65618016e+00,   3.03138568e-01,  -1.02196040e+00,  -2.21750759e-01, 
+          -1.72682912e+00,  -1.23679339e+00,   3.32640475e-01,  -4.60601000e-01,  -7.81932128e-02, 
+           4.11906483e+00,  -1.89283131e+00,  -3.88776684e-01,   1.80199833e+00,   1.96404455e+00, 
+           3.43852965e-01,  -6.23609543e-01,   1.81733087e-01,   5.72130123e-01,   1.20715657e+00, 
+          -9.16486162e-01,  -5.61833245e-01,   1.67641549e-01,  -1.75329878e+00,   2.02727673e+00, 
+          -2.28164354e-01,   8.44422552e-01,  -1.51806276e+00,   1.11571422e+00,  -6.35541493e-01, 
+          -7.89951282e-02,   4.72008590e-01,  -8.35642565e-01,   3.68813724e-01,  -7.06411185e-01, 
+          -2.06091646e-01,   1.16843231e+00,   2.22169824e+00,  -2.13768098e+00,   2.32776602e-01, 
+           2.52900016e-01,  -1.14185849e+00,   1.66528537e-01,   1.98871626e+00,   6.88624657e-01, 
+           1.86755853e-01,  -2.60746884e-01,   2.14480822e-01,   5.74795125e-01,  -1.38808062e-01, 
+           6.23677175e-01,  -2.74784978e+00,  -8.37018300e-02,  -3.22071295e-01,   3.66767660e-01, 
+          -8.23091717e-01,  -7.47733613e-02,   1.51128334e+00,  -1.74266371e+00,  -2.99285140e-01, 
+          -5.11163366e-01,   6.42039600e-01,   2.76048507e-01,  -7.37616832e-01,   1.22339395e+00, 
+          -2.67566663e-01,  -7.51730239e-02,   2.01868691e-01,   7.07868632e-01,  -1.21711787e+00, 
+          -1.85687375e+00,   1.05200890e+00,   1.47295756e+00,   2.54890967e-01,  -1.24936980e+00, 
+          -2.57051185e+00,   3.98733877e-01,  -7.23513377e-01,   1.21540059e+00,   8.12283422e-01, 
+           1.65554595e+00,  -1.17091747e+00,   1.34992672e-01,  -1.26490262e+00,   1.90743067e+00, 
+           1.26996550e+00,   6.84984124e-01,  -2.42826181e+00,   5.82274924e-01,  -6.03997807e-02, 
+          -2.34897259e-01,  -2.82126477e+00,   6.99213914e-01,  -6.24173822e-01,   9.13698195e-01, 
+           2.30096444e+00,  -7.69519522e-01,  -2.05936269e+00,  -5.04623275e-01,   9.51572220e-01, 
+          -1.04990530e+00,   9.29427177e-01,  -1.00119016e+00,   5.58533219e-01,  -1.96190366e+00, 
+          -2.19649662e+00,   2.76351981e-01,   1.00882502e+00,   1.77184378e+00,   1.52844587e+00, 
+          -6.11090570e-01,   8.38972820e-01,  -1.19408219e+00,   1.09833108e+00,   1.79335203e+00, 
+           9.50652921e-01,   2.03016606e-01,  -7.05328950e-01,   2.63976431e+00,   1.32128813e+00, 
+          -3.26324584e-01,  -6.03144462e-01,  -1.15795682e+00,  -2.84347500e-01,  -2.70637624e+00, 
+           8.99588322e-01,   1.16243638e+00,   6.23042073e-01,  -1.05633172e+00,   7.74870856e-01, 
+           1.11703946e+00,   7.31498949e-01,   4.88889866e-02,   5.18543386e-01,  -1.15303239e-01, 
+          -3.72740004e-01,   7.18707005e-01,  -1.10160673e-02,  -3.42219376e-01,  -4.07108891e-01, 
+           1.46297984e+00,   2.21343521e+00,   1.36672760e+00,  -1.42677666e+00,  -1.53701751e+00, 
+           1.20834078e+00,   5.34986888e-01,  -1.09136550e-01,   4.83101030e-01,   7.86715435e-01, 
+           1.04015999e-01,   6.21976525e-01,  -2.08139696e+00,   6.95530731e-01,   1.03483749e+00, 
+          -1.35308249e+00,   4.56603819e-02,  -2.25926466e-01,   2.43326854e-01,   6.16818669e-01, 
+           6.94683652e-02,  -2.33814385e-01,  -2.22136024e+00,   1.86899901e+00,   1.10748320e+00, 
+           1.16927626e+00,  -2.45241826e+00,   1.27914126e+00,   1.60261128e+00,  -1.94906569e+00, 
+           1.97845616e+00,  -4.46554806e-01,  -8.02072809e-01,  -1.96479219e+00,   3.59615459e-01, 
+          -5.74916548e-01,  -1.86520891e-01,   1.24436447e+00,  -7.48666778e-01,  -2.45964718e+00, 
+          -2.48723344e-01,   1.49576775e+00,   1.18547459e-01,  -1.24812482e+00,   1.65059802e+00, 
+          -8.75251737e-01,  -3.00917161e+00,  -9.70460069e-01,  -6.87370120e-01,  -1.39008336e+00, 
+          -4.98646683e-01,   1.53959956e+00,   1.34417230e+00,   7.25609309e-01,  -7.97696169e-01, 
+          -8.26531057e-01,  -2.73695934e+00,   2.27172885e+00,   1.58063398e-01,  -5.75734209e-01, 
+          -1.20968554e+00,   8.79594164e-01,  -1.97505063e-01,   6.07633769e-01,  -5.23534759e-01, 
+           5.39579521e-01,  -1.43180248e+00,  -1.31573180e+00,   2.06689061e-01,   8.44228287e-01, 
+           1.01539177e-01,   8.50313924e-01,   1.13773193e+00,  -6.09337003e-01,   1.22573408e+00, 
+           1.60308325e+00,  -3.58368736e+00,  -1.44948284e+00,  -1.41743392e+00,  -5.61340107e-01, 
+          -9.68290606e-01,  -2.02739053e+00,   2.71090499e-01,   2.51806453e+00,  -9.34553301e-02, 
+           5.98489523e-01,   1.00383713e-01,   1.47096663e+00,  -1.87702008e+00,  -9.71287935e-01, 
+           1.36813300e+00,  -1.05133427e-01,  -7.45511518e-01,   1.15482681e-02,   7.41538344e-01, 
+           4.89211699e-01,   1.78611375e-01,  -3.22591658e-01,  -6.62753734e-01,  -6.79941629e-01, 
+          -1.56662518e+00,  -1.30972025e+00,  -9.95839674e-01,   5.78534201e-01,  -3.55251735e-01, 
+          -4.20144708e-02,   2.11099051e-01,  -1.37500178e+00,   3.05860052e-01,   2.39801447e+00, 
+           1.06806434e-01,  -4.31891309e-02,  -5.92778723e-01,  -2.33810000e-01,   2.73379933e-01, 
+          -8.91777478e-01,  -5.54188105e-01,  -7.29232486e-01,  -2.61636425e-02,  -2.56123061e+00, 
+          -1.82546639e+00 ]
+      </p>
+      <m shape='(108)'>
+       [   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03 ]
+      </m>
+      <names shape='(108)'>
+       [ H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2 ]
+      </names>
+   </beads>
+   <total_steps>5000</total_steps>
+   <cell shape='(3, 3)'>
+    [   3.37259417e+01,   2.06511833e-15,   2.06511833e-15,   0.00000000e+00,   3.37259417e+01, 
+        2.06511833e-15,   0.00000000e+00,   0.00000000e+00,   3.37259417e+01 ]
+   </cell>
+   <forces>
+      <socket>
+         <port>31415</port>
+      </socket>
+   </forces>
+   <output prefix=''>
+      <properties shape='(6)' filename='tut1.md'>
+       [ step, time{picosecond}, conserved{kelvin}, temperature{kelvin}, potential{kelvin}, 
+         kinetic_cv{kelvin} ]
+      </properties>
+      <properties stride='20' shape='(1)' filename='tut1.force'> [ atom_f{piconewton}(atom=0;bead=0) ] </properties>
+      <trajectory format='pdb' filename='tut1.pos' stride='100' cell_units='angstrom'>positions{angstrom}</trajectory>
+      <checkpoint stride='1000' filename='tut1.checkpoint'>6</checkpoint>
+   </output>
+   <prng>
+      <state shape='(624)'>
+       [ 2687888409, 4059721984, 529212847, 1944050140, 549951740, 
+         753730274, 4256902940, 3644633819, 1619935418, 2926854959, 
+         3845596702, 3377185214, 672656208, 1522275289, 2252162595, 
+         3840064745, 4027492069, 3675681571, 2579879846, 1816332499, 
+         4032401752, 1911816378, 303445975, 1468438718, 4013747657, 
+         1340600813, 2333908485, 2694837801, 4170600699, 2510847348, 
+         3039951471, 3744192067, 1926386446, 1272375545, 1414207521, 
+         66179398, 4083890893, 4151044133, 576437212, 1676792606, 
+         434309634, 1907904212, 552501071, 2721977900, 1774218030, 
+         2379944892, 895572049, 964207007, 855123501, 322370220, 
+         2071560835, 311075834, 2622627631, 3049706185, 2343013325, 
+         68709345, 1862864050, 3480897554, 1688711674, 3849088037, 
+         2335410691, 2553458415, 3853338058, 2210199727, 2794071459, 
+         2398176951, 3934057850, 1698758425, 1011318686, 1806201471, 
+         1034736815, 3855360847, 835665231, 2475925733, 233924796, 
+         3024757758, 2198530484, 3673044703, 1249768122, 3962863565, 
+         3357863236, 2995035040, 307264231, 726406611, 2449569067, 
+         2105792248, 2511154863, 1776943467, 1288186977, 1069459630, 
+         4142069906, 2662399901, 2976669074, 3587203732, 2374529826, 
+         1425481845, 228954896, 829104572, 3792121363, 2155121068, 
+         4012537920, 4004560763, 1828234324, 523136808, 212778594, 
+         2400962328, 2941249333, 941934455, 1185399473, 1989697055, 
+         3876270640, 2356595322, 2240658826, 1455744954, 1294764103, 
+         197281598, 3596260716, 1784450322, 4229237399, 2625160461, 
+         3437563840, 99534139, 4231199313, 4186457231, 1356327267, 
+         11955050, 694326214, 3281619587, 1501920361, 4047724237, 
+         254407815, 1209336385, 2469757968, 3247917043, 467877924, 
+         714928015, 1424369871, 2112691093, 961450464, 1302826015, 
+         1508195287, 2682046824, 1166405749, 130758490, 669915191, 
+         3325468865, 2863429703, 99481154, 2455859519, 3512819878, 
+         2058734245, 713709489, 92681358, 1270820689, 2875258344, 
+         4089059727, 2319856617, 3246994482, 2375401460, 3526989769, 
+         2037481502, 1523778672, 4277357577, 3378312673, 1761280988, 
+         385602812, 2806072191, 263793228, 3893867788, 1122562696, 
+         3292179677, 196613098, 1412940405, 437753556, 2089537898, 
+         3093827021, 2543771523, 2707596589, 4247024898, 423016972, 
+         1950202748, 619404510, 1524092033, 2603783903, 1668886628, 
+         1610491330, 203643004, 378998824, 3077420296, 1135622483, 
+         1741156718, 4043803158, 134627695, 3826076900, 2236198903, 
+         1299249975, 1841801847, 1664600294, 3214378313, 4189671272, 
+         3480243241, 2314880827, 726164864, 1258895459, 1021877225, 
+         57278710, 2540601428, 2729779922, 1740214549, 1640865107, 
+         1355185385, 2109593488, 2195506700, 672372257, 2178115007, 
+         1875949822, 1689867492, 385658740, 2445406785, 271863064, 
+         988127097, 1025468932, 2359419817, 30505704, 3740615491, 
+         302654725, 68322970, 3937476624, 1133164597, 2115798914, 
+         320399345, 783710429, 2653212426, 3534685928, 1799928422, 
+         3374564924, 140092188, 2838741355, 118331603, 3274090979, 
+         2536288199, 424964681, 2624886533, 930882804, 2205394448, 
+         2184146172, 676812400, 3846276446, 3664199786, 1428020191, 
+         174713762, 1742043028, 1988587715, 250315220, 3460710952, 
+         518855886, 3301263820, 3376830340, 1924596217, 3991359611, 
+         4018324691, 2736101407, 3348220756, 4134954748, 1014806456, 
+         811815211, 2969949177, 1648717003, 1095340695, 3941199066, 
+         1442177871, 2118024477, 3440070762, 2652513624, 2449760687, 
+         3263443330, 2902806218, 3234417117, 1849567332, 947381041, 
+         3667048364, 951549915, 3479164436, 3858250612, 331400252, 
+         2281345388, 2762215954, 3082365401, 683228175, 3454398927, 
+         970279118, 2070406438, 3049304524, 1693733059, 175159517, 
+         1769171565, 2762326718, 2494712358, 1596534753, 696283870, 
+         2018059673, 92137961, 494184422, 392011733, 1385029818, 
+         934252405, 333359117, 3764822796, 1330799844, 1968964095, 
+         1099463842, 3602247127, 2198538609, 99239880, 3666952197, 
+         1538751175, 687515492, 1759850188, 1784319556, 219306934, 
+         3607066683, 3549791334, 1244006176, 3168276190, 2506130029, 
+         934365798, 4125460139, 2267772610, 4123099235, 3145641762, 
+         2282867996, 947174487, 2735752579, 1153570283, 1214198797, 
+         3843855592, 226542409, 1556151146, 2140750114, 173612017, 
+         3793649149, 513160329, 1696259753, 2196908248, 4236321655, 
+         3978054768, 3076169778, 1237756707, 794294503, 2478806329, 
+         3270485108, 21511829, 3648378180, 2173244083, 390728983, 
+         1613278496, 245589104, 1871555825, 840092166, 2005126608, 
+         2086709055, 346538249, 755528088, 4150217063, 1800593080, 
+         2996189003, 223378615, 26641502, 1408725657, 1055486622, 
+         2783260926, 2418422845, 1425876347, 2681749907, 689577833, 
+         2439224882, 1119191698, 3284738598, 3248369824, 2184806341, 
+         3827067703, 1403375638, 2039560728, 2026930258, 1439858255, 
+         3646642925, 357706083, 801162144, 200302113, 843383109, 
+         3953988752, 803642989, 133507707, 1890262095, 2010928680, 
+         153102298, 62155903, 277159866, 3184049271, 3470490419, 
+         1263803797, 1744789719, 291191777, 2104793752, 3710673355, 
+         690715888, 3985842110, 2609560703, 850539005, 86744360, 
+         1737104979, 1863808169, 1774594416, 295814460, 349948339, 
+         2998856642, 2965669633, 1901828086, 3978738887, 1547972061, 
+         3099911135, 2005717380, 567557764, 4005749125, 2160875982, 
+         3708061218, 71131479, 4020136758, 2494015768, 1649237263, 
+         3904477723, 398737933, 1060721700, 1863476301, 370356512, 
+         3071414126, 2579819024, 1413367122, 2902740002, 111597792, 
+         3291486874, 2640531015, 3168695648, 2512654909, 3959449531, 
+         2099836667, 1724339088, 1513859793, 1867797563, 72940112, 
+         150365030, 2695841664, 1822792143, 1313669546, 2967322181, 
+         520611643, 353667991, 2717535171, 3765848346, 388428102, 
+         1356267895, 3512676772, 370279636, 3846898162, 230096495, 
+         1637173159, 611261822, 1005164736, 269482378, 3515088803, 
+         3384787851, 219854487, 3527128574, 1621986556, 2351564858, 
+         1464556636, 3969432414, 4241153635, 3481875215, 2028710485, 
+         2552303669, 398357876, 502240174, 2783848798, 3029135000, 
+         3389310739, 2505116094, 142532114, 3164584552, 2476051612, 
+         3402430270, 3909441351, 3427500434, 334653597, 3680534388, 
+         994471388, 3554495285, 1194116172, 2229772907, 1080120321, 
+         764714490, 2033099135, 14870392, 1699063853, 4063486208, 
+         1292743360, 2032090912, 72238972, 161094465, 1452285444, 
+         2672671278, 1692937611, 1323803845, 3240748400, 4018998180, 
+         747254077, 236045767, 3239449578, 983232024, 3337514013, 
+         1251769771, 3333700522, 410670915, 987407435, 2475716801, 
+         2872258033, 4098868775, 1252507952, 3804640001, 1349395704, 
+         3776831082, 2921973556, 4089719272, 2209056770, 4132418611, 
+         1349045766, 1096167788, 946557058, 2742739413, 675697683, 
+         981116951, 3762459934, 735892043, 2820765771, 3285067216, 
+         2160644040, 3791763118, 3326789900, 4049571064, 2680776632, 
+         3569204094, 65929649, 3389067210, 3597945585, 1844146738, 
+         2700511765, 329482853, 1760204187, 923334769, 4064120545, 
+         3501525441, 185277522, 1241941790, 3591317416, 417403194, 
+         1300287444, 568015210, 1937417620, 1293297106, 1132926831, 
+         2866724791, 3257502829, 2947848120, 3895316838, 522557077, 
+         3227142004, 3090084150, 1099385887, 281296826, 1305525858, 
+         4048212751, 1083053479, 1851665893, 2417839863, 1623516667, 
+         3571192609, 3711731288, 2688150423, 1385750380, 3001410324, 
+         3992036671, 438613795, 1675062808, 126103207, 3806023665, 
+         3378609204, 3872710810, 3254661971, 3271656093, 2954958773, 
+         2955771203, 943499290, 1783244758, 27256593, 2736330207, 
+         2854314347, 1414980118, 3499653814, 2716003330, 1906739972, 
+         2097871403, 833490830, 860249641, 1359898654, 681385897, 
+         768010275, 1337229341, 2176361026, 1243749829, 2535464086, 
+         3587794549, 257320265, 1799338138, 2326145708 ]
+      </state>
+      <seed>12345</seed>
+      <set_pos>432</set_pos>
+      <gauss> -8.30560467e-01</gauss>
+   </prng>
+   <ensemble mode='nvt'>
+      <thermostat mode='pile_g'>
+         <tau>  1.03353433e+03</tau>
+         <ethermo>  2.24648494e-02</ethermo>
+      </thermostat>
+      <timestep>  4.13413730e+01</timestep>
+      <temperature>  7.91703800e-05</temperature>
+   </ensemble>
+</simulation>
diff --git a/tools/i-pi/examples/tutorial/tutorial-2/tutorial-2a.xml b/tools/i-pi/examples/tutorial/tutorial-2/tutorial-2a.xml
new file mode 100755
index 0000000000000000000000000000000000000000..b6e6824637c907f05d23636916faee495fc3c397
--- /dev/null
+++ b/tools/i-pi/examples/tutorial/tutorial-2/tutorial-2a.xml
@@ -0,0 +1,742 @@
+<simulation verbosity='high'>
+   <beads natoms='108' nbeads='4'>
+      <q shape='(4, 324)'>
+       [  -1.83955900e+00,  -2.24073938e+00,  -1.08250020e+00,  -5.70795599e-01,   7.32627980e+00, 
+           7.19210265e+00,  -3.30615234e-01,   3.98119438e+00,   1.51691432e+00,   2.52717260e+00, 
+          -1.27666806e+00,   4.73413388e+00,   1.12126184e+00,   1.26764230e+00,   1.02704916e+01, 
+           1.29998780e+00,   3.73413588e+00,   1.61919862e+01,   5.88202729e+00,   8.04850032e+00, 
+           1.24311326e+01,   1.02078708e+01,   1.86360455e+00,   1.64012625e+01,   1.17619062e+00, 
+           4.24983476e-01,   2.55535965e+01,   1.65002846e-01,   5.34507262e+00,   2.73617602e+01, 
+           6.62641741e+00,   5.73764066e+00,   2.33893339e+01,   6.10026934e+00,   2.56958142e+00, 
+           2.92780910e+01,   2.01269291e+00,   8.69979574e+00,  -6.33324249e-01,   1.14898211e+00, 
+           1.61301653e+01,   3.70551886e+00,   5.80295868e+00,   1.66782201e+01,   2.75413040e-01, 
+           5.71194979e+00,   1.32139518e+01,   7.47120998e+00,   2.90527832e+00,   1.26243247e+01, 
+           1.18688316e+01,   3.86777222e-01,   1.86473408e+01,   1.66542003e+01,   6.49634508e+00, 
+           1.76520477e+01,   1.52792529e+01,   9.56145353e+00,   1.16514109e+01,   1.76464481e+01, 
+           7.90247690e-01,   1.28040514e+01,   1.99445660e+01,   1.91319083e+00,   1.48232256e+01, 
+           2.81978021e+01,   7.47808952e+00,   1.73026463e+01,   2.15060634e+01,   7.95108626e+00, 
+           9.08836417e+00,   2.88452581e+01,  -8.39364894e-01,   2.33095835e+01,  -1.26661254e+00, 
+          -2.26048825e+00,   2.73659085e+01,   6.83034984e+00,   5.55328952e+00,   3.00964760e+01, 
+          -2.13570013e+00,   3.85462300e+00,   2.11139559e+01,   6.98601751e+00,  -1.69779185e+00, 
+           2.02798593e+01,   8.98144417e+00,  -1.83724239e+00,   2.74015435e+01,   1.70384301e+01, 
+           5.49534087e+00,   2.92028322e+01,   1.28972834e+01,   4.00538016e+00,   2.38450279e+01, 
+           1.73369977e+01,   6.37702010e-01,   2.23536671e+01,   2.24315602e+01,  -9.17792114e-01, 
+           2.76922986e+01,   2.71486460e+01,   4.59352860e+00,   2.73738615e+01,   2.47996576e+01, 
+           3.50789080e+00,   2.24217692e+01,   2.85214338e+01,   1.27744386e+01,  -3.16474409e+00, 
+          -4.32938118e+00,   1.23369331e+01,   5.19778303e+00,   6.29834102e+00,   1.65171169e+01, 
+           7.43433654e+00,  -1.50763053e-01,   1.71757563e+01,   8.73504480e-02,   2.91427460e+00, 
+           1.37000162e+01,   3.58863547e-01,   1.16430675e+01,   1.33468414e+01,   7.88277760e+00, 
+           1.35602855e+01,   1.85311481e+01,   6.66308247e+00,   1.10802627e+01,   1.62994052e+01, 
+           1.15789465e+00,   1.73181503e+01,   9.33358989e+00,   3.82104623e-01,   2.45811794e+01, 
+           1.33131712e+01,   5.68071890e+00,   2.77946720e+01,   1.29013165e+01,   7.27837218e+00, 
+           2.09147450e+01,   1.84799695e+01,  -1.43953367e+00,   2.88271546e+01,   1.06297113e+01, 
+           1.06874159e+01,   1.80009217e+00,   9.88791886e+00,   1.74750501e+01,   5.38215565e+00, 
+           1.75814278e+01,   1.64927163e+01,  -7.22490057e-01,   1.59410372e+01,   1.21327342e+01, 
+           5.31684038e+00,   1.07398656e+01,   1.27687533e+01,   1.11831750e+01,   1.30396209e+01, 
+           1.78543512e+01,   1.53781269e+01,   1.74549497e+01,   1.69593034e+01,   1.25392544e+01, 
+           1.91056959e+01,   1.02634068e+01,   1.58723572e+01,   1.01017169e+01,   1.15340755e+01, 
+           2.42047249e+01,   8.82103648e+00,   1.74196163e+01,   2.71575865e+01,   1.42717489e+01, 
+           1.61565324e+01,   2.20042138e+01,   1.46526399e+01,   1.22238423e+01,   2.82739099e+01, 
+           1.32115234e+01,   2.28595316e+01,  -3.43176969e-01,   9.94990444e+00,   3.15261979e+01, 
+           7.17743425e+00,   1.79725272e+01,   2.66047961e+01,  -1.03202183e-01,   1.46786234e+01, 
+           2.03983934e+01,   6.75355215e+00,   1.21898998e+01,   2.68300650e+01,   1.28501206e+01, 
+           9.52256604e+00,   2.96146284e+01,   1.79253244e+01,   1.48734446e+01,   2.75889170e+01, 
+           7.84459536e+00,   2.04254604e+01,   2.29273727e+01,   1.86587003e+01,   1.36039471e+01, 
+           2.34500168e+01,   1.76328865e+01,   1.06667576e+01,   2.40841230e+01,   2.49370928e+01, 
+           1.38349803e+01,   3.01788493e+01,   2.19453967e+01,   1.96844070e+01,   2.17383789e+01, 
+           2.79207277e+01,   2.40109880e+01,   2.44652621e+00,   7.71232732e-01,   2.28150210e+01, 
+           4.44993033e+00,   6.32217106e+00,   2.86959872e+01,   6.16770811e+00,   2.54155030e+00, 
+           2.86295708e+01,   6.58513110e-01,   7.07847686e+00,   1.91416715e+01,   8.42657055e-01, 
+           1.09318699e+01,   2.21629487e+01,   3.26372053e+00,   1.85487891e+01,   2.42299255e+01, 
+           3.53057281e+00,   1.21895915e+01,   3.07759304e+01,   5.87270948e-01,   1.54581789e+01, 
+           2.21462069e+01,  -3.29544187e+00,   2.17376848e+01,   2.08019829e+01,   5.74042948e+00, 
+           2.91126306e+01,   2.82616387e+01,   4.12726443e+00,   2.38117939e+01,   2.48604110e+01, 
+          -9.81005677e-02,   2.75017597e+01,   2.19769526e+01,   9.55679072e+00,  -3.48501195e-01, 
+           2.15122044e+01,   1.35659683e+01,   4.45218017e+00,   2.70106862e+01,   1.84178475e+01, 
+           2.90258066e+00,   3.09038945e+01,   1.13784966e+01,   3.97619446e+00,   2.33776271e+01, 
+           1.09744756e+01,   9.48584489e+00,   2.30108491e+01,   1.65710971e+01,   1.59074187e+01, 
+           2.90437432e+01,   1.63990319e+01,   1.41164353e+01,   3.03675824e+01,   9.36100919e+00, 
+           1.59902897e+01,   2.19588417e+01,   9.65547975e+00,   2.31178969e+01,   2.07325650e+01, 
+           1.43025889e+01,   2.85076354e+01,   2.79531009e+01,   1.40545290e+01,   1.99579811e+01, 
+           2.86838426e+01,   1.23353706e+01,   2.65845766e+01,   2.36116501e+01,   2.56191152e+01, 
+           5.93663687e+00,   2.14810798e+01,   3.18962824e+01,   6.43104769e+00,   2.61566331e+01, 
+           3.11398548e+01,   2.04112055e+00,   2.78161522e+01,   2.39026490e+01,   3.29230633e+00, 
+           2.35872061e+01,   1.92586393e+01,   9.42997765e+00,   2.18868541e+01,   2.93005866e+01, 
+           1.56731672e+01,   2.57892309e+01,   3.08659127e+01,   1.04565213e+01,   2.89111102e+01, 
+           2.23973168e+01,   1.41543879e+01,   2.40352391e+01,   1.89355855e+01,   2.26713139e+01, 
+           2.60883570e+01,   2.53551683e+01,   3.10959184e+01,   2.56617570e+01,   2.53873006e+01, 
+           2.02938950e+01,   2.87914567e+01,   1.97522769e+01,   2.78202344e+01,  -1.76425983e+00, 
+          -1.53558560e+00,  -1.71338801e+00,  -9.78599968e-01,   6.87902421e+00,   7.88543588e+00, 
+           5.47881861e-01,   3.64324940e+00,   1.39468482e+00,   3.60000249e+00,  -9.28967610e-01, 
+           4.01716866e+00,   2.42995414e+00,   1.05628735e+00,   1.03627265e+01,   9.20694754e-01, 
+           4.29683694e+00,   1.64579850e+01,   6.19121450e+00,   7.68893688e+00,   1.23304998e+01, 
+           9.82833523e+00,   1.54814143e+00,   1.71545209e+01,   6.99417618e-01,   8.54622163e-02, 
+           2.48873966e+01,  -3.11309329e-01,   6.97214120e+00,   2.66220741e+01,   5.25625287e+00, 
+           7.68138067e+00,   2.39284370e+01,   6.25528626e+00,   3.07873577e+00,   3.00882100e+01, 
+           1.15270468e+00,   8.88014098e+00,   3.00512398e-01,   9.30446242e-01,   1.71408264e+01, 
+           3.50661823e+00,   5.83759203e+00,   1.72729331e+01,   3.34582087e-01,   5.40503488e+00, 
+           1.24459036e+01,   5.56073866e+00,   1.21588195e+00,   1.31551680e+01,   1.27378351e+01, 
+          -4.66813441e-01,   1.87703376e+01,   1.69486235e+01,   6.75076580e+00,   1.83449120e+01, 
+           1.48488718e+01,   9.47340998e+00,   1.17932793e+01,   1.67868142e+01,   6.10952151e-01, 
+           1.27008444e+01,   2.15901214e+01,   1.76087373e+00,   1.40248834e+01,   2.78953850e+01, 
+           6.51618548e+00,   1.72532108e+01,   2.04694567e+01,   7.36556309e+00,   9.99912211e+00, 
+           2.91964532e+01,  -7.06531579e-01,   2.27219694e+01,  -1.31954187e+00,  -1.54612461e+00, 
+           2.75038363e+01,   6.70572831e+00,   5.21401215e+00,   2.84508378e+01,  -1.38701455e+00, 
+           5.24874266e+00,   2.15644003e+01,   8.28914156e+00,  -2.21199280e+00,   2.06411930e+01, 
+           9.08490967e+00,  -3.69161804e-01,   2.79213183e+01,   1.67707124e+01,   5.77258212e+00, 
+           2.95534123e+01,   1.29379476e+01,   5.27372097e+00,   2.29618317e+01,   1.82846335e+01, 
+           5.50365226e-01,   2.32915342e+01,   2.26003508e+01,  -3.23975407e-01,   2.71026192e+01, 
+           2.69864390e+01,   5.25571146e+00,   2.84281121e+01,   2.43362803e+01,   4.19783582e+00, 
+           2.23458941e+01,   2.89351055e+01,   1.30027038e+01,  -2.89260409e+00,  -3.32667625e+00, 
+           1.24700611e+01,   5.45576814e+00,   6.79907186e+00,   1.69263149e+01,   5.70732090e+00, 
+           1.52975089e-01,   1.72152577e+01,  -5.86473536e-01,   2.60910235e+00,   1.39562777e+01, 
+           1.10496755e+00,   9.89893108e+00,   1.27550907e+01,   6.50405608e+00,   1.44860215e+01, 
+           1.84418079e+01,   6.98755864e+00,   1.14378627e+01,   1.73685838e+01,   1.03634629e+00, 
+           1.72542968e+01,   9.36166090e+00,   1.26996989e+00,   2.48970836e+01,   1.35415180e+01, 
+           4.84360499e+00,   2.82597230e+01,   1.28859648e+01,   7.62646315e+00,   2.08202186e+01, 
+           1.82323636e+01,  -1.58242560e+00,   2.82645654e+01,   9.67026415e+00,   9.99521608e+00, 
+           1.48323928e+00,   1.06202054e+01,   1.74410916e+01,   5.30476845e+00,   1.68915394e+01, 
+           1.66028258e+01,  -3.98602304e-01,   1.52286166e+01,   1.15951307e+01,   4.88875152e+00, 
+           1.16320855e+01,   1.18462368e+01,   1.17721604e+01,   1.30800856e+01,   1.72687237e+01, 
+           1.52362824e+01,   1.86182764e+01,   1.72413013e+01,   1.32638271e+01,   1.90927913e+01, 
+           1.01652528e+01,   1.60527418e+01,   9.59785151e+00,   1.16306603e+01,   2.32521891e+01, 
+           1.02733588e+01,   1.86418357e+01,   2.65319699e+01,   1.48920616e+01,   1.69296308e+01, 
+           2.24345192e+01,   1.44781142e+01,   1.16768928e+01,   2.87742833e+01,   1.26440243e+01, 
+           2.31651077e+01,   1.09153308e+00,   9.32620240e+00,   3.18068970e+01,   5.91156305e+00, 
+           1.82338682e+01,   2.68163992e+01,  -6.10171355e-01,   1.56193643e+01,   1.99596118e+01, 
+           8.12957661e+00,   1.34391603e+01,   2.79448176e+01,   1.21148599e+01,   9.90095353e+00, 
+           2.95224900e+01,   1.88551608e+01,   1.63687321e+01,   2.81729033e+01,   7.75414361e+00, 
+           2.11290647e+01,   2.30983265e+01,   1.80818117e+01,   1.22179830e+01,   2.36227246e+01, 
+           1.85352948e+01,   1.00736995e+01,   2.52569655e+01,   2.39704097e+01,   1.44179838e+01, 
+           2.90993728e+01,   2.15195489e+01,   1.95569595e+01,   2.20162082e+01,   2.86888343e+01, 
+           2.38790793e+01,   1.81853851e+00,  -8.62424353e-01,   2.30087081e+01,   3.67168316e+00, 
+           5.79906646e+00,   2.86237895e+01,   5.77923269e+00,   1.82976727e+00,   2.97992364e+01, 
+          -2.44824247e-01,   6.97483848e+00,   1.97479547e+01,   1.28907671e+00,   1.06238401e+01, 
+           2.22988651e+01,   3.36189040e+00,   1.99142865e+01,   2.56182622e+01,   4.87467917e+00, 
+           1.16104104e+01,   3.01052148e+01,  -1.89720612e-01,   1.52853202e+01,   2.30601562e+01, 
+          -3.37897609e+00,   2.20210883e+01,   2.21023714e+01,   7.37999253e+00,   2.99827770e+01, 
+           2.83970918e+01,   5.06217176e+00,   2.39324034e+01,   2.36552267e+01,   3.97689851e-01, 
+           2.70250248e+01,   2.32913517e+01,   1.10207360e+01,   7.64503581e-01,   2.00178673e+01, 
+           1.37487336e+01,   4.25542754e+00,   2.60455321e+01,   1.69122386e+01,   2.31534587e+00, 
+           3.04356904e+01,   1.25406626e+01,   5.17675092e+00,   2.38621411e+01,   1.14515762e+01, 
+           9.75443924e+00,   2.25731071e+01,   1.62345346e+01,   1.68317268e+01,   2.84171490e+01, 
+           1.69913568e+01,   1.42827468e+01,   2.97526886e+01,   9.31307649e+00,   1.67785293e+01, 
+           2.17762297e+01,   8.96916957e+00,   2.19718340e+01,   2.22594418e+01,   1.33823144e+01, 
+           2.81207945e+01,   2.77005814e+01,   1.50622075e+01,   2.05455699e+01,   2.92151641e+01, 
+           1.30044976e+01,   2.67938258e+01,   2.17064822e+01,   2.45224793e+01,   5.39644288e+00, 
+           2.09907797e+01,   3.13381910e+01,   6.65786528e+00,   2.44267241e+01,   2.96324924e+01, 
+           1.59248807e+00,   2.81352950e+01,   2.52179231e+01,   3.21255854e+00,   2.29984530e+01, 
+           1.94459863e+01,   9.90712637e+00,   1.95242101e+01,   2.89090489e+01,   1.59338674e+01, 
+           2.54944440e+01,   3.14856070e+01,   1.10580434e+01,   2.91399127e+01,   2.38737698e+01, 
+           1.47156065e+01,   2.36566327e+01,   1.94718712e+01,   2.27327251e+01,   2.67255132e+01, 
+           2.57714727e+01,   3.15584870e+01,   2.55546714e+01,   2.55331520e+01,   2.06608588e+01, 
+           2.85241759e+01,   1.96187079e+01,   2.95686729e+01,  -1.28506833e+00,  -1.19627373e+00, 
+          -1.11505578e+00,  -1.26613495e+00,   6.87769487e+00,   8.86664224e+00,   3.22672767e-01, 
+           3.60048900e+00,   1.75198909e+00,   3.39985912e+00,  -5.38113592e-01,   4.40630180e+00, 
+           2.05527629e+00,   1.04780310e+00,   1.09245524e+01,   1.64433825e+00,   5.07925261e+00, 
+           1.66693862e+01,   6.34528032e+00,   6.84652464e+00,   1.30553942e+01,   9.19503930e+00, 
+           1.02559973e+00,   1.64900202e+01,   1.50883393e+00,   1.94153184e-01,   2.60419984e+01, 
+           2.23637168e-01,   5.88126235e+00,   2.68151686e+01,   6.09330009e+00,   6.41359349e+00, 
+           2.27265508e+01,   5.20417493e+00,   3.02351860e+00,   2.90727542e+01,   5.22759441e-01, 
+           9.07723226e+00,   3.74357289e-01,   5.28407017e-01,   1.77876299e+01,   3.40818122e+00, 
+           4.77500246e+00,   1.61051931e+01,  -7.15798597e-01,   5.35494411e+00,   1.24396028e+01, 
+           5.26132317e+00,   3.65101881e+00,   1.45180281e+01,   1.20044556e+01,   6.47702685e-01, 
+           1.89647984e+01,   1.63575659e+01,   6.85886982e+00,   1.86666656e+01,   1.39918716e+01, 
+           9.63134562e+00,   1.21489398e+01,   1.79744053e+01,  -4.65149892e-02,   1.28820467e+01, 
+           2.20848030e+01,   5.38141652e-01,   1.49773108e+01,   2.86234466e+01,   6.69460622e+00, 
+           1.70430908e+01,   2.03293501e+01,   7.46084699e+00,   9.27068140e+00,   2.87672652e+01, 
+          -1.77446797e+00,   2.31007533e+01,  -1.61541146e+00,  -1.44197270e+00,   2.59669452e+01, 
+           7.05366958e+00,   6.78973516e+00,   2.82048010e+01,  -6.81707442e-01,   4.11224811e+00, 
+           2.33230735e+01,   7.64143788e+00,  -1.30932484e+00,   2.00341346e+01,   8.43186122e+00, 
+          -3.23227570e-01,   2.88456685e+01,   1.71869485e+01,   5.59484664e+00,   2.86861878e+01, 
+           1.38255153e+01,   5.39986151e+00,   2.26670663e+01,   1.74856853e+01,   1.31353338e+00, 
+           2.27240963e+01,   2.26573999e+01,  -6.43284767e-01,   2.75545414e+01,   2.65487243e+01, 
+           6.36781664e+00,   2.89591698e+01,   2.55204798e+01,   4.19690392e+00,   2.20492684e+01, 
+           2.90086623e+01,   1.29407803e+01,  -3.28971533e+00,  -3.59953707e+00,   1.30308691e+01, 
+           4.52526975e+00,   6.05334642e+00,   1.80200038e+01,   6.86934432e+00,  -6.64799107e-01, 
+           1.77004927e+01,  -1.08469207e+00,   2.66573197e+00,   1.33883962e+01,   1.77878946e+00, 
+           1.01478623e+01,   1.28332615e+01,   7.20488713e+00,   1.30030127e+01,   1.82890722e+01, 
+           5.45538575e+00,   1.26731818e+01,   1.64372459e+01,   1.13264799e+00,   1.68270761e+01, 
+           9.29480506e+00,   8.02789471e-01,   2.50004864e+01,   1.30397241e+01,   4.25942991e+00, 
+           2.82105770e+01,   1.34839369e+01,   6.59877473e+00,   1.96748658e+01,   1.90248344e+01, 
+          -7.34844927e-01,   2.61879859e+01,   1.06994814e+01,   1.04221404e+01,   1.19626201e+00, 
+           9.75063627e+00,   1.82675328e+01,   4.79479047e+00,   1.67169178e+01,   1.67708791e+01, 
+          -3.25796174e-01,   1.58140826e+01,   1.07514402e+01,   4.16021066e+00,   1.14190484e+01, 
+           1.20130431e+01,   1.10359921e+01,   1.23286945e+01,   1.73093633e+01,   1.60093426e+01, 
+           1.72472089e+01,   1.71555986e+01,   1.29595403e+01,   1.96515771e+01,   1.07779852e+01, 
+           1.55906451e+01,   1.04066011e+01,   1.06852174e+01,   2.41637389e+01,   9.33300851e+00, 
+           1.72769290e+01,   2.72366205e+01,   1.43344594e+01,   1.55444449e+01,   2.25613745e+01, 
+           1.54876710e+01,   1.23994150e+01,   2.77630051e+01,   1.24465157e+01,   2.22953455e+01, 
+           7.07224538e-01,   9.17225571e+00,   3.04541888e+01,   7.00444346e+00,   1.90451094e+01, 
+           2.68206460e+01,   2.12443190e-01,   1.40421608e+01,   2.16604155e+01,   8.76748146e+00, 
+           1.18599685e+01,   2.63467340e+01,   1.24514910e+01,   9.07508597e+00,   2.94452971e+01, 
+           1.81138604e+01,   1.65350863e+01,   2.76724408e+01,   8.10094240e+00,   2.03902238e+01, 
+           2.19891729e+01,   1.81613540e+01,   1.28241365e+01,   2.30836693e+01,   1.77077396e+01, 
+           1.07839643e+01,   2.43167076e+01,   2.35379387e+01,   1.43368823e+01,   2.99960368e+01, 
+           2.18020500e+01,   1.98836259e+01,   2.10543368e+01,   2.77564511e+01,   2.38873187e+01, 
+           2.63596088e+00,  -8.45710736e-01,   2.26031998e+01,   4.94875239e+00,   6.06483058e+00, 
+           2.72420930e+01,   7.16044030e+00,   2.03664724e+00,   2.83819926e+01,   1.41474271e+00, 
+           6.86956553e+00,   1.90297274e+01,   2.08547446e-01,   1.17356589e+01,   2.20093707e+01, 
+           3.11015561e+00,   1.84015708e+01,   2.55258414e+01,   4.51413195e+00,   1.15060640e+01, 
+           3.04420577e+01,   2.05350822e-01,   1.59037463e+01,   2.20766378e+01,  -3.08680082e+00, 
+           2.27928539e+01,   2.19423049e+01,   6.96063455e+00,   2.93175572e+01,   2.63580580e+01, 
+           4.17130592e+00,   2.37215427e+01,   2.48207538e+01,  -1.10022388e+00,   2.72061284e+01, 
+           2.27735841e+01,   1.10983539e+01,   5.03790539e-01,   2.05447311e+01,   1.35069355e+01, 
+           4.99617490e+00,   2.74249691e+01,   1.74389534e+01,   2.12313453e+00,   3.09387285e+01, 
+           1.30390672e+01,   4.56728163e+00,   2.49467870e+01,   1.09552706e+01,   1.05134177e+01, 
+           2.26330821e+01,   1.67053853e+01,   1.63758180e+01,   2.83218004e+01,   1.73740024e+01, 
+           1.40724154e+01,   3.02682616e+01,   8.35484609e+00,   1.66575388e+01,   2.13501708e+01, 
+           1.01994161e+01,   2.34754835e+01,   2.17794008e+01,   1.46632688e+01,   2.78344546e+01, 
+           2.68554005e+01,   1.40368100e+01,   2.04864069e+01,   2.79509647e+01,   1.19193324e+01, 
+           2.79392613e+01,   2.26582097e+01,   2.45440331e+01,   6.30616900e+00,   2.13859764e+01, 
+           3.08849664e+01,   6.44869190e+00,   2.64928749e+01,   3.02400532e+01,   8.32685758e-01, 
+           2.74640627e+01,   2.40967712e+01,   3.18770838e+00,   2.27412709e+01,   1.85562433e+01, 
+           9.23151490e+00,   2.03983609e+01,   2.91681800e+01,   1.56979455e+01,   2.51695730e+01, 
+           3.07717754e+01,   1.06821424e+01,   2.92168363e+01,   2.36456995e+01,   1.45948324e+01, 
+           2.33527556e+01,   1.93047064e+01,   2.37746530e+01,   2.48248533e+01,   2.61599136e+01, 
+           3.04541638e+01,   2.58041186e+01,   2.56474296e+01,   2.02610796e+01,   2.85417157e+01, 
+           1.88972442e+01,   2.98568715e+01,  -2.38586496e+00,  -7.58828968e-01,  -1.63156635e+00, 
+          -1.24260140e-01,   7.66170676e+00,   8.26519210e+00,   8.18582687e-01,   3.21215177e+00, 
+           8.71469426e-01,   3.32445560e+00,  -1.32118548e+00,   3.91101312e+00,   2.32046567e+00, 
+           1.58370834e+00,   1.07292588e+01,   1.33792245e+00,   4.76690685e+00,   1.57155304e+01, 
+           5.60070334e+00,   7.35450929e+00,   1.13291649e+01,   9.38118665e+00,   1.32457406e+00, 
+           1.64112640e+01,   2.06694803e+00,  -1.08774960e-01,   2.51995098e+01,   5.83962037e-01, 
+           6.14184963e+00,   2.60031487e+01,   7.65609079e+00,   5.60778423e+00,   2.29300579e+01, 
+           5.77114858e+00,   2.13679298e+00,   2.93327862e+01,   2.19806103e+00,   9.68222590e+00, 
+           1.57880111e+00,   3.14284164e-01,   1.73107320e+01,   3.17317841e+00,   5.31032205e+00, 
+           1.67722718e+01,  -3.21992890e-01,   4.86044703e+00,   1.46302272e+01,   6.21744347e+00, 
+           3.23194778e+00,   1.36053502e+01,   1.20906550e+01,   1.05401318e+00,   1.89924170e+01, 
+           1.86500989e+01,   7.28920551e+00,   1.90214147e+01,   1.48608421e+01,   8.94579137e+00, 
+           1.17939437e+01,   1.76451822e+01,  -2.16292241e-01,   1.27470176e+01,   2.10170183e+01, 
+           1.86340865e+00,   1.43620945e+01,   2.88854080e+01,   7.51715045e+00,   1.76892134e+01, 
+           2.12086589e+01,   7.40953137e+00,   8.90283609e+00,   2.82643224e+01,  -1.81615954e+00, 
+           2.35425566e+01,  -6.35391065e-01,  -1.81429720e+00,   2.64341698e+01,   6.21091555e+00, 
+           5.43254354e+00,   2.75836921e+01,  -9.47958758e-01,   4.71567619e+00,   2.21052659e+01, 
+           7.88771418e+00,  -1.66841626e+00,   2.04914383e+01,   8.26675658e+00,  -4.59229759e-01, 
+           2.71579580e+01,   1.68410204e+01,   5.00100432e+00,   2.90662447e+01,   1.29214242e+01, 
+           4.69089603e+00,   2.34759714e+01,   1.67656282e+01,   6.53854823e-01,   2.38352952e+01, 
+           2.17931036e+01,  -1.01639060e+00,   2.72103570e+01,   2.59664262e+01,   4.89596274e+00, 
+           2.77674695e+01,   2.47617265e+01,   3.70839276e+00,   2.19495406e+01,   2.77068507e+01, 
+           1.33883490e+01,  -2.96774368e+00,  -3.88662826e+00,   1.21540528e+01,   4.88520987e+00, 
+           6.46250715e+00,   1.58502434e+01,   7.52061809e+00,  -5.94010768e-01,   1.80041063e+01, 
+          -1.45785510e+00,   1.90361473e+00,   1.37682126e+01,   1.01096461e+00,   1.05140180e+01, 
+           1.32426632e+01,   7.30651107e+00,   1.44595448e+01,   1.87287975e+01,   5.98649586e+00, 
+           1.22746034e+01,   1.63100152e+01,   1.15741871e+00,   1.66981121e+01,   9.12913654e+00, 
+          -2.92667679e-01,   2.45886138e+01,   1.33050334e+01,   3.97377478e+00,   2.69467178e+01, 
+           1.42080442e+01,   6.64595078e+00,   2.01191284e+01,   1.86015542e+01,  -1.75336417e+00, 
+           2.83471787e+01,   1.08620615e+01,   1.11988186e+01,   1.95253365e+00,   9.45047887e+00, 
+           1.75938537e+01,   4.23821913e+00,   1.70208034e+01,   1.60108143e+01,  -1.22190668e+00, 
+           1.50766040e+01,   1.12165304e+01,   5.43990155e+00,   1.09933699e+01,   1.22850779e+01, 
+           1.16546326e+01,   1.23781385e+01,   1.80369686e+01,   1.53125056e+01,   1.73516609e+01, 
+           1.75785987e+01,   1.18313796e+01,   1.94046667e+01,   1.10166421e+01,   1.62979612e+01, 
+           9.66207941e+00,   1.08458701e+01,   2.37048314e+01,   8.44004940e+00,   1.70203943e+01, 
+           2.65757559e+01,   1.43027170e+01,   1.63790927e+01,   2.18182624e+01,   1.38144113e+01, 
+           1.12481654e+01,   2.87113704e+01,   1.23513270e+01,   2.18980717e+01,   5.17961694e-01, 
+           9.82158593e+00,   3.06003668e+01,   6.40959927e+00,   1.97382355e+01,   2.64666452e+01, 
+          -2.56886470e-01,   1.51138569e+01,   2.14756928e+01,   7.69843726e+00,   1.13280462e+01, 
+           2.53724470e+01,   1.17891597e+01,   9.16645548e+00,   2.85470480e+01,   1.83229821e+01, 
+           1.60641629e+01,   2.74309208e+01,   8.14336993e+00,   2.00104262e+01,   2.16691335e+01, 
+           1.90509791e+01,   1.35353858e+01,   2.30944654e+01,   1.79157296e+01,   1.01235942e+01, 
+           2.45385866e+01,   2.35448360e+01,   1.40749201e+01,   3.01972078e+01,   2.17768651e+01, 
+           2.03786050e+01,   2.10805498e+01,   2.76935947e+01,   2.44615615e+01,   3.05749628e+00, 
+           4.07414296e-01,   2.16336438e+01,   4.40657970e+00,   5.21060398e+00,   2.88299726e+01, 
+           7.01128437e+00,   8.79026008e-01,   2.85241186e+01,   3.14915946e-01,   7.07809470e+00, 
+           1.98625917e+01,   4.50200492e-03,   1.15863909e+01,   2.29376845e+01,   2.50348240e+00, 
+           1.86113050e+01,   2.47645618e+01,   3.74984924e+00,   1.16835156e+01,   3.00116656e+01, 
+           1.33610084e+00,   1.54039934e+01,   2.16664404e+01,  -3.77318264e+00,   2.24073626e+01, 
+           2.17213138e+01,   6.32154759e+00,   2.91289015e+01,   2.80778040e+01,   4.04768899e+00, 
+           2.51637272e+01,   2.49482621e+01,  -1.80258150e+00,   2.77649841e+01,   2.28639670e+01, 
+           9.52095023e+00,   1.12320744e+00,   2.11060298e+01,   1.35966775e+01,   4.52804356e+00, 
+           2.65933190e+01,   1.74870802e+01,   3.12917456e+00,   3.12581554e+01,   1.26369216e+01, 
+           4.24969839e+00,   2.28577555e+01,   1.09623135e+01,   9.61329928e+00,   2.31292240e+01, 
+           1.68635673e+01,   1.59562582e+01,   2.83134554e+01,   1.65993286e+01,   1.34061062e+01, 
+           3.07651009e+01,   8.60937322e+00,   1.58164516e+01,   2.15713342e+01,   9.77426434e+00, 
+           2.38239983e+01,   2.07170028e+01,   1.44272471e+01,   2.72915473e+01,   2.78094878e+01, 
+           1.46067375e+01,   2.02374654e+01,   2.83102299e+01,   1.21902457e+01,   2.73283465e+01, 
+           2.25040436e+01,   2.40201181e+01,   7.24105767e+00,   2.16659528e+01,   3.22281603e+01, 
+           6.56727556e+00,   2.67438472e+01,   3.14254999e+01,   1.00941523e+00,   2.72477648e+01, 
+           2.43062679e+01,   3.91537815e+00,   2.28206020e+01,   1.90617248e+01,   9.50661026e+00, 
+           1.95693791e+01,   2.99400820e+01,   1.67827219e+01,   2.52432494e+01,   3.09283864e+01, 
+           1.18433291e+01,   3.02997758e+01,   2.26469178e+01,   1.40818435e+01,   2.52061280e+01, 
+           1.93512323e+01,   2.29021542e+01,   2.65208970e+01,   2.53952117e+01,   3.08512322e+01, 
+           2.76076800e+01,   2.54724293e+01,   1.95719692e+01,   2.94254771e+01,   1.94406409e+01, 
+           2.73992646e+01 ]
+      </q>
+      <p shape='(4, 324)'>
+       [   1.40372994e-01,  -1.70336384e+00,   6.37303020e-01,  -3.60483257e-01,  -1.10940109e+00, 
+           3.74869623e-01,  -3.25735029e-01,   7.75472220e-01,   1.10757231e+00,  -2.40493336e+00, 
+          -1.53716651e+00,   1.37041429e+00,   5.28228491e-01,   1.38616874e+00,  -1.38581237e+00, 
+          -3.77690596e-01,   2.35773187e-01,   1.37036828e+00,   1.74363360e+00,   1.46668252e+00, 
+           9.19554977e-01,   1.46604384e+00,   7.17395153e-01,   1.16766357e+00,   5.74213643e-01, 
+           1.73367931e-01,  -1.66161161e+00,   2.33212598e+00,  -9.77285003e-01,   2.41575083e-01, 
+          -1.49585940e-01,  -1.18522916e+00,   1.58553462e-01,  -1.47168505e+00,  -1.24387557e+00, 
+           7.68483391e-01,  -1.56677579e+00,   8.39149463e-01,  -7.60108832e-01,  -1.39563512e-01, 
+           1.23618455e+00,  -3.39699359e-01,  -9.88358452e-01,  -1.25161119e+00,   5.75688958e-01, 
+           3.34908289e-02,  -1.57137545e+00,   9.54873978e-01,   2.21048523e-01,   3.15471131e+00, 
+           4.38424417e-01,  -1.41296551e+00,  -6.15293784e-01,   4.54568031e-01,   5.25912190e-01, 
+           1.10462750e+00,  -7.33687512e-01,   3.51836732e-01,   1.11696908e+00,  -1.75519514e-01, 
+          -9.87401261e-01,  -1.00224818e+00,  -2.06257599e+00,  -8.69995365e-02,   1.96237139e-01, 
+          -1.55878661e+00,   2.06187113e+00,   5.21020731e-03,   2.35617406e-01,   1.59018004e+00, 
+           1.23310143e+00,  -9.06287741e-01,   1.02772014e+00,  -4.13278400e-01,  -9.73895321e-01, 
+           1.26420822e+00,  -6.00372594e-02,  -8.86889397e-01,  -1.35877237e+00,   1.26542138e-01, 
+          -1.96996606e+00,   1.16602982e+00,  -1.87715811e+00,  -1.07989580e+00,   1.52684255e-01, 
+           2.69202324e+00,  -7.86764932e-01,  -1.26792145e+00,  -2.15985504e-01,   2.83847115e-01, 
+          -3.90074815e-02,  -3.21827572e-01,   8.60927158e-01,   1.15174374e+00,  -1.06395947e+00, 
+           6.56206723e-01,   1.71687653e+00,   1.88094551e+00,  -1.41246651e-01,   6.67235507e-01, 
+           8.02729512e-01,  -5.99750938e-01,   3.86175582e-01,   1.56674025e+00,   1.16770355e-01, 
+          -1.25058894e-01,  -6.64317179e-01,  -1.90732529e+00,  -3.49443824e-01,  -1.75313244e+00, 
+          -8.93802373e-01,  -8.38911513e-02,  -3.54765784e+00,   3.29189169e-01,  -1.59470714e+00, 
+           2.28214169e-01,  -2.04640475e+00,  -1.21363021e+00,   4.43956386e-01,   1.98553407e+00, 
+          -6.41921427e-01,   8.31610867e-01,   2.37729074e-01,  -1.96307860e+00,   5.83519443e-01, 
+          -9.23373803e-01,  -2.72733993e-01,  -6.80313749e-01,  -4.21629881e-01,   8.24112349e-02, 
+          -2.02945940e-02,   4.70239760e-02,  -8.87189426e-01,   2.62362546e-01,   2.90567277e-03, 
+          -5.77088646e-01,   8.63734028e-01,   2.12881273e-01,  -1.84398318e+00,  -1.27537888e+00, 
+          -8.96390165e-01,   8.67723220e-01,  -7.13233254e-01,   9.98467053e-01,   1.20471615e+00, 
+           3.80364988e-02,  -3.86066496e-01,   2.80482433e-01,  -5.55953973e-01,   6.99483364e-01, 
+          -6.20862722e-01,  -5.75941665e-01,  -1.01810316e+00,   6.59129210e-01,   3.36528627e-01, 
+           1.19657571e+00,   1.16325245e+00,   1.38231876e+00,  -1.62296272e+00,   7.73325492e-01, 
+           9.07953738e-01,  -1.56020700e+00,   5.91276288e-01,  -1.45072710e+00,   3.06498507e-01, 
+           1.02001412e+00,  -7.79180574e-01,  -1.09202701e+00,   8.60608247e-01,  -8.12517020e-01, 
+          -3.29732754e-01,   7.95824769e-02,  -3.53180396e-01,  -6.92843090e-01,   8.08287670e-01, 
+          -1.31368002e+00,   8.92275005e-01,   7.74460553e-01,  -4.16315357e-01,   4.13327475e-01, 
+           2.07077192e-01,  -2.18589769e+00,  -1.02281048e-01,   9.09167509e-02,  -1.46835347e+00, 
+           1.23256338e+00,  -3.07250057e-01,   2.46249432e-01,   7.74791555e-01,   3.98298680e-01, 
+          -5.39569195e-02,   4.73911005e-01,   1.79978269e+00,   6.49413046e-01,   1.44049305e+00, 
+          -7.54136523e-01,   6.85251391e-01,  -1.03401786e+00,  -1.07121945e+00,   1.15101429e+00, 
+          -6.78252322e-01,   3.66963136e-02,  -1.11945652e-01,  -4.17808375e-01,   9.68133746e-02, 
+           1.99069757e+00,   1.55013114e+00,  -1.92882805e-02,   1.33795454e+00,   7.39452603e-01, 
+           3.77633950e-01,   1.81163711e+00,   2.58943819e+00,   1.29562203e+00,  -1.48713547e+00, 
+          -9.55424888e-01,   3.46515063e-01,   4.16880974e-01,  -1.14430760e+00,  -5.41540342e-01, 
+           1.15617781e+00,  -8.15311978e-01,  -1.24131679e-01,  -1.01785991e+00,  -6.82587363e-01, 
+           1.34485087e+00,   3.95295976e-01,   3.61637052e-01,  -4.79290805e-01,   1.96407902e-02, 
+          -6.96427808e-01,   9.65717585e-01,   4.63130635e-01,  -4.12348950e-02,  -6.14114134e-02, 
+           3.76909298e-01,   1.31464930e-01,  -1.96943568e+00,  -2.07138054e+00,   1.07506895e+00, 
+          -8.47693792e-02,   1.50838082e+00,   9.66357898e-01,   3.29832625e-02,   2.53592195e+00, 
+          -8.44613584e-01,  -1.75528218e-01,  -1.51432281e+00,  -1.30241164e+00,  -2.07575407e-01, 
+          -1.04844306e+00,  -1.28575451e+00,   4.62727941e-01,   1.46590141e+00,  -2.63004766e-01, 
+          -1.01898113e+00,  -1.37875255e+00,  -9.12918530e-01,   1.71033710e+00,   1.02893180e+00, 
+          -1.32634968e+00,   8.82495711e-02,  -9.11997611e-01,  -2.42094019e+00,  -6.29467944e-01, 
+           8.08788619e-01,   1.94804910e+00,  -8.72566500e-01,   9.20033720e-01,  -1.72884793e+00, 
+           3.44191186e-01,   1.21733557e+00,   1.87515471e-01,   5.10808988e-02,   7.94329477e-01, 
+          -3.52316495e-01,  -1.00945167e+00,   7.35146276e-01,   1.07654301e+00,   1.04930155e+00, 
+          -1.85826022e+00,  -5.07927804e-01,  -9.80771494e-01,  -3.21767737e+00,  -1.49676613e-01, 
+          -2.15647041e-01,  -1.82770370e+00,   1.49469246e+00,  -1.68826911e+00,   1.62663223e+00, 
+          -3.48742295e-01,  -6.17863065e-01,  -8.81308520e-01,   7.44925882e-01,   1.73070837e+00, 
+          -1.28410488e-01,   8.64089144e-01,   3.26440658e-01,   1.10448379e+00,  -1.69522830e-01, 
+          -6.53776497e-01,   3.81864979e-01,  -1.07760135e+00,  -3.98562627e-01,   5.38128157e-01, 
+          -2.29754635e-01,  -2.33407869e+00,  -1.25116856e-01,  -1.21131987e+00,   1.08298393e+00, 
+           1.51546625e-01,  -3.56701517e-01,  -9.98362812e-01,   1.03306121e-01,  -4.42120758e-01, 
+          -3.94015959e-02,  -8.12077182e-01,  -5.72762073e-01,  -8.31013031e-01,  -1.16147494e+00, 
+          -7.35897383e-02,  -1.09398682e-01,  -1.40219599e+00,   9.63041766e-01,   6.60583424e-02, 
+          -1.71857732e+00,   1.99405396e-01,  -8.84068189e-01,  -2.18819685e-01,   2.21366910e+00, 
+          -1.84460428e+00,  -1.05848347e+00,  -1.53731311e+00,  -2.25141079e-01,   8.55239543e-02, 
+          -5.64991535e-01,  -1.11243253e+00,  -1.48334114e+00,   2.85484662e-01,  -5.98357857e-01, 
+          -5.62005083e-01,   5.18476929e-02,   7.20785662e-01,  -9.21464830e-01,  -4.17295452e-01, 
+          -7.06470111e-01,  -2.07423207e+00,  -2.82738840e-01,  -7.05765425e-01,   5.71154019e-01, 
+           1.41402308e+00,   7.15224885e-01,  -9.01571406e-01,  -1.78966537e-01,  -9.57855925e-01, 
+           1.92815188e+00,   3.67644067e-01,  -7.77398627e-01,   3.75573158e-01,  -1.27570871e+00, 
+          -1.56269598e-01,  -1.20126128e+00,   5.64996896e-01,  -1.45388556e+00,  -4.64414199e-01, 
+           1.88714704e+00,   1.47969578e+00,  -1.96063537e-01,   5.18755530e-01,   2.68937808e+00, 
+          -1.69730122e+00,  -5.36576005e-01,   1.04962410e+00,   4.65512668e-01,   1.47912174e+00, 
+           8.46469352e-01,   8.08058567e-01,   1.13879268e+00,   6.34831145e-01,   1.43535434e+00, 
+           2.04580992e+00,   7.90686500e-04,   1.19722827e+00,  -1.42644546e+00,   1.92405610e-01, 
+           8.14926140e-02,  -2.36223884e-01,   1.16089456e+00,   2.24765430e-01,  -1.32752285e+00, 
+           1.36642599e+00,  -5.36742312e-01,   4.98821954e-01,   6.00651182e-01,  -2.56801229e+00, 
+          -2.36250226e-01,  -8.57842968e-01,  -3.00915036e-01,   2.41807890e+00,   7.24711670e-01, 
+           1.36799087e+00,  -1.78428862e-01,  -3.59900038e-01,   3.42306822e-01,  -3.98271527e-01, 
+          -1.30912096e-01,  -5.36751004e-01,  -6.45495166e-01,   3.16360509e-02,  -6.38708513e-01, 
+           1.33860162e+00,   7.16436859e-01,   8.83639989e-01,  -2.87900422e-01,  -1.77363177e-01, 
+           1.75217790e-01,  -2.41654433e+00,  -8.13755792e-02,  -7.71741152e-01,   1.33456387e+00, 
+          -5.10830196e-01,  -1.10584683e+00,  -1.31689363e+00,   1.17583053e+00,   6.77964594e-01, 
+           2.99895744e-01,   5.12719967e-01,   2.06867244e+00,  -2.89182146e+00,   1.84494668e+00, 
+           3.10415200e-01,   1.64179666e+00,  -2.18044104e+00,  -9.27575571e-01,  -8.07814665e-01, 
+          -1.85157068e-01,   5.86693996e-01,   1.60605927e+00,  -1.03758631e-01,  -9.65958485e-01, 
+          -9.06979038e-01,   5.61735019e-01,   3.35132784e-01,   6.02021180e-01,   1.76689554e-01, 
+          -3.36488706e-02,   1.45021360e+00,   6.70122973e-01,  -1.71792295e-01,   8.29616451e-01, 
+          -8.05614322e-01,  -2.58079407e+00,   1.01873565e+00,  -3.81060235e-01,   1.00130704e+00, 
+           1.55674172e+00,   2.02125219e+00,  -7.48802492e-01,   1.06649929e+00,  -9.65493892e-01, 
+          -3.98926995e-01,   1.08567030e+00,  -1.04009627e+00,   1.41394914e+00,   1.80976669e+00, 
+          -4.38932124e-01,  -9.96116646e-01,   2.93325605e+00,  -2.65850173e+00,  -2.86627210e-01, 
+          -1.13380351e+00,   1.01776593e+00,   3.82798024e-01,  -2.03015905e+00,  -4.77705377e-01, 
+          -1.52497126e-01,  -3.08097496e-01,  -1.22388367e+00,   7.72589230e-01,  -1.18620576e+00, 
+           7.03396905e-01,  -6.07914021e-01,   1.36665589e+00,   3.05885200e-01,   8.68021103e-01, 
+           7.85645067e-01,   6.86344886e-01,   6.60054397e-02,   6.72872685e-01,  -1.72147672e+00, 
+          -3.35687107e-01,   6.40280686e-01,   1.90765562e-01,  -1.19759420e+00,   3.98723557e-01, 
+           1.01300503e+00,   3.15092859e-01,  -7.48716523e-01,  -6.31490429e-01,   5.03478302e-01, 
+          -7.97737020e-01,  -3.64328563e-01,  -6.84865111e-01,  -5.96889804e-01,   8.97320299e-01, 
+          -2.74447207e-01,   8.96041854e-01,   8.62447243e-01,   1.14171036e+00,   1.89620219e+00, 
+          -2.03086042e-01,   1.21863991e+00,  -7.08332672e-01,   8.65474351e-01,   8.84794271e-02, 
+          -7.38048949e-01,  -3.29738572e-01,   6.25639096e-01,   8.73860305e-01,   1.32892575e+00, 
+          -1.08731164e+00,   7.42722680e-02,   1.10376262e+00,  -2.70446460e-01,   4.84230480e-01, 
+          -7.49397372e-01,  -1.22773789e-01,  -1.73175160e+00,   1.00419017e+00,   4.18612640e-01, 
+          -1.19265354e+00,   1.89942453e+00,   2.16924392e-01,   1.98456504e+00,  -4.47127896e-02, 
+          -8.13751338e-01,  -1.57721515e+00,  -1.51087464e+00,   1.49149818e-01,   3.34518489e-01, 
+          -1.49643992e+00,   3.14649899e-01,   2.07634343e+00,  -6.04070136e-01,   1.87721508e+00, 
+          -4.06863898e-01,  -7.83918757e-01,   2.03531050e-01,  -7.64354284e-02,   3.31824344e-01, 
+           4.79012974e-01,   1.83535358e+00,   9.02286124e-01,  -1.15207026e+00,   1.28672254e-01, 
+          -8.26157812e-01,   1.90407166e+00,  -3.96264466e-01,   1.94392469e-01,  -8.73100373e-01, 
+          -3.37468953e-03,   9.76466097e-01,   6.23291758e-02,  -2.37497472e-01,   1.07993508e+00, 
+          -3.14201676e-01,   1.70621222e+00,  -9.90965410e-02,   1.20753777e-01,  -6.38441546e-01, 
+           1.41774776e+00,  -5.80882309e-01,   1.09405908e+00,   3.93716017e-01,  -1.28958167e+00, 
+           4.24488630e-01,   9.55061213e-01,   1.29635151e+00,  -1.96475095e-01,   1.27366715e-01, 
+           1.13693192e-01,  -1.99660506e+00,  -7.38934810e-01,   1.27623410e+00,   1.67534486e+00, 
+           2.98512870e-01,   1.48183369e+00,   1.03842506e+00,  -1.05881112e+00,   3.59296217e+00, 
+           2.33641006e+00,  -4.44058636e-01,  -7.05099765e-02,   3.21036779e-01,  -1.92001349e-01, 
+          -1.42762638e+00,  -4.05688476e-01,   4.80851634e-01,   4.74839401e-01,   1.26185094e+00, 
+          -1.05552598e-01,   5.56910980e-01,  -5.32621114e-01,   9.34349181e-02,   2.56314544e-01, 
+          -1.74582311e+00,   4.17470989e-01,   2.29528051e+00,   2.62392322e-01,   3.18772657e-01, 
+           8.17214811e-01,  -8.16325438e-01,  -4.19774898e-01,  -1.79953350e-02,   2.52742913e+00, 
+          -2.79795924e-02,  -8.35211211e-01,  -3.49992939e-01,   1.17976432e+00,   1.06455248e+00, 
+           4.99693771e-01,  -3.25404106e-01,  -1.19518002e+00,  -1.12107657e+00,   7.08571829e-01, 
+          -1.32836392e+00,  -4.05940531e-01,  -1.62901886e+00,   1.94474528e-01,   5.69560181e-01, 
+          -1.16097389e+00,  -9.55882892e-01,   8.43738270e-01,   9.60068854e-01,   3.04930133e-02, 
+           1.09691130e-01,   5.31002976e-01,  -7.96127056e-02,  -2.90684090e-02,  -2.90427758e-01, 
+           6.26093036e-01,   6.57694112e-01,  -4.85835995e-01,   1.80074318e-01,   1.12303284e+00, 
+           5.23912334e-01,   5.85300514e-01,   6.21565032e-01,  -6.88438319e-01,   1.76104297e+00, 
+           4.69681129e-01,  -1.50756131e+00,  -2.35433970e+00,   2.20926618e-01,  -1.59035655e+00, 
+          -2.16680752e-01,  -1.09766225e+00,  -3.66108880e-01,   6.72549669e-01,  -1.39966389e+00, 
+          -2.64964223e-01,  -4.47757200e-01,   5.31233808e-01,   1.84834139e+00,  -6.02818313e-01, 
+          -1.44473483e+00,   1.52776447e-02,  -7.93366554e-01,  -1.90159337e+00,   1.74463595e-01, 
+          -2.11499652e+00,  -2.25655780e+00,   1.18038845e+00,  -3.70794733e-01,  -8.67093500e-01, 
+           1.43290672e+00,  -1.38210097e-01,   1.14792213e+00,   1.06670774e+00,   1.03103438e+00, 
+          -9.00433225e-02,  -5.34357708e-01,  -1.22908335e+00,  -4.72611965e-01,   2.46111190e-01, 
+          -1.70561610e+00,   3.92682358e-01,  -1.55756928e+00,  -2.37928227e-01,   2.03059408e+00, 
+          -9.84120137e-01,  -2.11053290e+00,   6.16981710e-01,  -1.12243752e-01,  -1.10029159e-02, 
+           9.02048435e-01,   8.56294718e-01,   1.13642549e+00,  -1.50782750e+00,  -3.72301949e-01, 
+          -1.66280307e+00,  -1.38174795e+00,   8.97950650e-02,   5.55623559e-01,  -6.05980874e-01, 
+          -7.05479352e-01,   7.04832792e-01,  -3.20169261e-02,  -5.46153623e-01,  -4.23996939e-01, 
+          -1.87522120e+00,  -4.41626784e-01,   2.28022755e+00,   1.41852748e+00,   7.22573260e-01, 
+           2.28863935e+00,   1.32648450e+00,  -1.20732385e+00,   6.48320570e-01,  -5.97367023e-02, 
+           1.26207462e-01,  -2.04798081e+00,   1.13007921e+00,  -1.71585140e-01,   3.14833129e-02, 
+           1.71558970e-01,   2.30236146e-01,  -2.69742619e+00,   1.36832193e+00,  -4.09947214e-01, 
+          -2.00570514e-01,   8.31050179e-01,   1.40744357e+00,  -2.34268444e+00,  -7.42098732e-03, 
+           1.03611120e+00,   2.06373254e+00,  -5.02279592e-01,  -7.01081635e-01,   1.25847835e-01, 
+           6.02231279e-02,  -4.08815632e-01,  -3.34433187e-01,   1.42676664e+00,  -1.49454672e+00, 
+          -1.24564490e+00,   1.71269292e+00,   6.82206821e-01,   8.72601070e-01,  -9.22460387e-01, 
+           4.55740724e-02,   1.33030508e+00,   6.53585708e-02,   3.13993497e-01,  -2.11648823e+00, 
+          -1.36475580e-02,   2.51552262e+00,   9.25969768e-01,  -6.52019962e-01,   2.03940799e+00, 
+           2.55910092e-01,  -7.26525412e-01,  -1.00207723e+00,   1.31950793e+00,  -1.82967630e+00, 
+          -4.92805660e-01,   4.07867808e-01,   6.11026922e-02,  -2.11979237e-01,  -2.87253727e-01, 
+           1.11856203e+00,  -2.21720426e-01,   1.84350017e+00,   7.84784426e-01,  -1.49696700e+00, 
+           9.09038266e-01,  -1.27156936e+00,   9.56717220e-02,  -4.15656486e-01,   4.19788418e-01, 
+          -2.61691637e-01,  -1.56861006e+00,  -6.47659675e-01,  -6.83293713e-01,   2.51621894e+00, 
+          -4.44034798e-01,   1.78185380e+00,   4.60785269e-01,  -2.68311726e-01,   1.04600391e+00, 
+          -5.67576324e-01,   1.13507042e+00,  -1.78393940e+00,  -1.82719464e+00,  -1.84508388e+00, 
+          -1.29303124e+00,   1.35664029e+00,  -9.17173260e-01,   9.85863915e-01,   1.07223755e+00, 
+           8.84707496e-01,  -1.37852063e+00,   6.19459586e-01,  -2.93677966e-02,  -3.18737198e-01, 
+           1.03094159e+00,   4.89778531e-01,   1.73667810e+00,  -2.03090079e-01,   3.64701299e-01, 
+           3.48172075e-01,  -1.54091587e+00,   1.04498049e+00,  -1.28639737e+00,  -4.71319136e-01, 
+           8.61169102e-01,   1.61610909e+00,   7.69597251e-01,   7.68227380e-01,   1.11224694e+00, 
+           8.48919769e-01,   3.12294367e-01,  -4.93201021e-01,   6.42746189e-01,  -2.27293413e-01, 
+           2.16505068e-01,   5.52193787e-01,  -1.76108774e+00,  -4.43454137e-01,  -1.10836243e+00, 
+           7.49078941e-01,  -5.26434049e-02,   4.23300776e-01,  -1.66554395e+00,   3.10524219e-01, 
+           1.19480829e+00,  -6.29200409e-01,   6.41552685e-01,   7.60530128e-01,  -1.44429069e+00, 
+          -2.98038448e-01,   5.01177628e-01,   3.97341120e-01,   4.53467676e-01,  -1.35725377e+00, 
+           9.43314195e-01,   2.15143758e+00,   3.94302672e-01,   2.26509780e-01,   9.59313828e-01, 
+          -1.66404768e-01,   1.65207595e-01,  -2.39340233e+00,   3.14543001e+00,   1.05218765e+00, 
+          -8.14714579e-01,  -3.05710147e-01,  -1.74531477e+00,  -3.64151538e-01,  -2.09140760e-01, 
+           2.23739053e+00,   6.09477113e-01,   1.16899879e+00,   5.92967924e-01,  -8.17673149e-01, 
+          -1.10420428e+00,   4.65350290e-01,   2.11023040e-03,   8.14863971e-01,   1.08315984e+00, 
+          -7.25860590e-02,  -4.59896403e-01,   1.38164252e+00,   5.89336792e-01,   1.34519891e+00, 
+          -3.63277304e-01,   9.08232031e-01,   2.05775821e-01,   1.01268871e+00,   2.25900629e-01, 
+           1.11195741e+00,   1.46383492e+00,   1.15712737e+00,   1.37285918e+00,  -3.27123406e-01, 
+           2.10121867e+00,   3.63728898e-01,  -9.64451543e-01,   7.50304023e-02,   2.26045537e+00, 
+          -1.07848463e-01,  -5.55058232e-01,   6.46210385e-01,  -3.82173868e-01,   1.02724203e+00, 
+           4.75226625e-01,   2.63486832e-01,  -1.87720616e-01,   2.66714045e+00,  -1.37046410e-01, 
+          -9.47273326e-01,  -2.21070556e+00,   5.16910020e-01,  -1.00019802e+00,  -6.10344773e-01, 
+          -1.23626760e-01,  -7.78025616e-01,   3.54873800e-01,   1.32409224e+00,  -4.96383871e-01, 
+          -8.45650299e-01,  -7.06777204e-01,   7.74296088e-01,   5.40594697e-01,  -2.35323920e+00, 
+           1.10574355e+00,  -2.71490739e-01,   3.89486537e-01,  -2.25716891e+00,   1.08161436e+00, 
+          -7.61396029e-01,  -6.43902282e-01,   2.07071361e-01,  -1.24311778e+00,   1.66718154e+00, 
+          -1.12540846e+00,   4.04848060e-01,   9.82172410e-01,  -2.22704668e-01,  -4.41651091e-01, 
+           8.11339257e-01,  -1.71211605e+00,  -6.16208091e-02,   8.56110168e-01,   5.66390166e-01, 
+           6.39785155e-01,   1.39973994e+00,  -6.88244744e-01,   2.42634138e+00,   3.24544610e-01, 
+           4.48313772e-01,   7.45142689e-01,  -7.23045807e-02,   1.83704141e-01,  -1.47171323e+00, 
+          -7.09077372e-01,  -6.01038702e-01,  -8.75281454e-01,   5.13919915e-01,  -6.60822470e-01, 
+          -1.43487765e+00,   7.49938057e-01,   2.83635875e-01,   3.07045512e-01,   1.48936195e+00, 
+          -2.17046249e-01,   2.04101206e+00,   6.02181940e-01,  -1.78421830e-01,  -8.17580831e-01, 
+           6.13386299e-01,   1.46247756e-01,  -1.42514706e+00,  -1.93940896e+00,  -8.65275710e-01, 
+           1.47462311e-01,  -4.02301576e-01,  -9.63675890e-01,  -1.84120948e+00,   8.14102917e-01, 
+           3.80760496e-01,   3.25900148e-01,  -4.87843594e-01,  -1.03508268e+00,   3.57676231e-01, 
+          -6.47622001e-01,   2.14181936e+00,  -3.34827796e-01,  -8.07284435e-01,  -8.49708166e-01, 
+          -8.31736592e-01,   6.33904552e-01,   4.35249821e-01,  -9.13698624e-01,  -2.96290563e-01, 
+           3.77906357e-02,  -1.16936544e+00,  -3.14920460e-03,  -1.18537362e+00,   2.99624644e-01, 
+           1.76247250e+00,  -6.49375825e-01,  -1.89211809e-01,  -1.00974570e+00,   1.47455608e+00, 
+           1.72728137e+00,   2.18072141e+00,  -7.62571173e-01,  -1.23504812e+00,   2.14290218e-01, 
+          -7.46888683e-01,   5.53627395e-01,  -7.82076567e-03,   1.56933507e+00,   1.07155739e+00, 
+          -6.42903166e-01,  -9.85900335e-01,  -6.31873346e-01,  -9.85430080e-01,   3.97933623e-01, 
+          -2.07587828e+00,   2.76612669e-01,  -1.22060249e+00,  -2.25139829e-01,   1.80572908e+00, 
+          -5.58028004e-01,  -8.45859723e-01,  -1.30829100e+00,  -1.65904870e+00,  -9.78603426e-01, 
+          -3.70256932e-01,   6.40194479e-01,   1.29842617e+00,   5.79764541e-01,  -2.18955795e+00, 
+          -6.34491122e-01,   2.83457214e-01,   2.71316544e-01,   5.79996139e-01,  -1.90426727e+00, 
+          -2.20898199e+00,   5.67839219e-01,  -1.04623710e+00,   1.01192986e+00,   1.18567472e+00, 
+          -1.73342893e+00,  -2.65618016e+00,   3.03138568e-01,  -1.02196040e+00,  -2.21750759e-01, 
+          -1.72682912e+00,  -1.23679339e+00,   3.32640475e-01,  -4.60601000e-01,  -7.81932128e-02, 
+           4.11906483e+00,  -1.89283131e+00,  -3.88776684e-01,   1.80199833e+00,   1.96404455e+00, 
+           3.43852965e-01,  -6.23609543e-01,   1.81733087e-01,   5.72130123e-01,   1.20715657e+00, 
+          -9.16486162e-01,  -5.61833245e-01,   1.67641549e-01,  -1.75329878e+00,   2.02727673e+00, 
+          -2.28164354e-01,   8.44422552e-01,  -1.51806276e+00,   1.11571422e+00,  -6.35541493e-01, 
+          -7.89951282e-02,   4.72008590e-01,  -8.35642565e-01,   3.68813724e-01,  -7.06411185e-01, 
+          -2.06091646e-01,   1.16843231e+00,   2.22169824e+00,  -2.13768098e+00,   2.32776602e-01, 
+           2.52900016e-01,  -1.14185849e+00,   1.66528537e-01,   1.98871626e+00,   6.88624657e-01, 
+           1.86755853e-01,  -2.60746884e-01,   2.14480822e-01,   5.74795125e-01,  -1.38808062e-01, 
+           6.23677175e-01,  -2.74784978e+00,  -8.37018300e-02,  -3.22071295e-01,   3.66767660e-01, 
+          -8.23091717e-01,  -7.47733613e-02,   1.51128334e+00,  -1.74266371e+00,  -2.99285140e-01, 
+          -5.11163366e-01,   6.42039600e-01,   2.76048507e-01,  -7.37616832e-01,   1.22339395e+00, 
+          -2.67566663e-01,  -7.51730239e-02,   2.01868691e-01,   7.07868632e-01,  -1.21711787e+00, 
+          -1.85687375e+00,   1.05200890e+00,   1.47295756e+00,   2.54890967e-01,  -1.24936980e+00, 
+          -2.57051185e+00,   3.98733877e-01,  -7.23513377e-01,   1.21540059e+00,   8.12283422e-01, 
+           1.65554595e+00,  -1.17091747e+00,   1.34992672e-01,  -1.26490262e+00,   1.90743067e+00, 
+           1.26996550e+00,   6.84984124e-01,  -2.42826181e+00,   5.82274924e-01,  -6.03997807e-02, 
+          -2.34897259e-01,  -2.82126477e+00,   6.99213914e-01,  -6.24173822e-01,   9.13698195e-01, 
+           2.30096444e+00,  -7.69519522e-01,  -2.05936269e+00,  -5.04623275e-01,   9.51572220e-01, 
+          -1.04990530e+00,   9.29427177e-01,  -1.00119016e+00,   5.58533219e-01,  -1.96190366e+00, 
+          -2.19649662e+00,   2.76351981e-01,   1.00882502e+00,   1.77184378e+00,   1.52844587e+00, 
+          -6.11090570e-01,   8.38972820e-01,  -1.19408219e+00,   1.09833108e+00,   1.79335203e+00, 
+           9.50652921e-01,   2.03016606e-01,  -7.05328950e-01,   2.63976431e+00,   1.32128813e+00, 
+          -3.26324584e-01,  -6.03144462e-01,  -1.15795682e+00,  -2.84347500e-01,  -2.70637624e+00, 
+           8.99588322e-01,   1.16243638e+00,   6.23042073e-01,  -1.05633172e+00,   7.74870856e-01, 
+           1.11703946e+00,   7.31498949e-01,   4.88889866e-02,   5.18543386e-01,  -1.15303239e-01, 
+          -3.72740004e-01,   7.18707005e-01,  -1.10160673e-02,  -3.42219376e-01,  -4.07108891e-01, 
+           1.46297984e+00,   2.21343521e+00,   1.36672760e+00,  -1.42677666e+00,  -1.53701751e+00, 
+           1.20834078e+00,   5.34986888e-01,  -1.09136550e-01,   4.83101030e-01,   7.86715435e-01, 
+           1.04015999e-01,   6.21976525e-01,  -2.08139696e+00,   6.95530731e-01,   1.03483749e+00, 
+          -1.35308249e+00,   4.56603819e-02,  -2.25926466e-01,   2.43326854e-01,   6.16818669e-01, 
+           6.94683652e-02,  -2.33814385e-01,  -2.22136024e+00,   1.86899901e+00,   1.10748320e+00, 
+           1.16927626e+00,  -2.45241826e+00,   1.27914126e+00,   1.60261128e+00,  -1.94906569e+00, 
+           1.97845616e+00,  -4.46554806e-01,  -8.02072809e-01,  -1.96479219e+00,   3.59615459e-01, 
+          -5.74916548e-01,  -1.86520891e-01,   1.24436447e+00,  -7.48666778e-01,  -2.45964718e+00, 
+          -2.48723344e-01,   1.49576775e+00,   1.18547459e-01,  -1.24812482e+00,   1.65059802e+00, 
+          -8.75251737e-01,  -3.00917161e+00,  -9.70460069e-01,  -6.87370120e-01,  -1.39008336e+00, 
+          -4.98646683e-01,   1.53959956e+00,   1.34417230e+00,   7.25609309e-01,  -7.97696169e-01, 
+          -8.26531057e-01,  -2.73695934e+00,   2.27172885e+00,   1.58063398e-01,  -5.75734209e-01, 
+          -1.20968554e+00,   8.79594164e-01,  -1.97505063e-01,   6.07633769e-01,  -5.23534759e-01, 
+           5.39579521e-01,  -1.43180248e+00,  -1.31573180e+00,   2.06689061e-01,   8.44228287e-01, 
+           1.01539177e-01,   8.50313924e-01,   1.13773193e+00,  -6.09337003e-01,   1.22573408e+00, 
+           1.60308325e+00,  -3.58368736e+00,  -1.44948284e+00,  -1.41743392e+00,  -5.61340107e-01, 
+          -9.68290606e-01,  -2.02739053e+00,   2.71090499e-01,   2.51806453e+00,  -9.34553301e-02, 
+           5.98489523e-01,   1.00383713e-01,   1.47096663e+00,  -1.87702008e+00,  -9.71287935e-01, 
+           1.36813300e+00,  -1.05133427e-01,  -7.45511518e-01,   1.15482681e-02,   7.41538344e-01, 
+           4.89211699e-01,   1.78611375e-01,  -3.22591658e-01,  -6.62753734e-01,  -6.79941629e-01, 
+          -1.56662518e+00,  -1.30972025e+00,  -9.95839674e-01,   5.78534201e-01,  -3.55251735e-01, 
+          -4.20144708e-02,   2.11099051e-01,  -1.37500178e+00,   3.05860052e-01,   2.39801447e+00, 
+           1.06806434e-01,  -4.31891309e-02,  -5.92778723e-01,  -2.33810000e-01,   2.73379933e-01, 
+          -8.91777478e-01,  -5.54188105e-01,  -7.29232486e-01,  -2.61636425e-02,  -2.56123061e+00, 
+          -1.82546639e+00 ]
+      </p>
+      <m shape='(108)'>
+       [   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03,   3.67494322e+03, 
+           3.67494322e+03,   3.67494322e+03,   3.67494322e+03 ]
+      </m>
+      <names shape='(108)'>
+       [ H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2, H2, H2, 
+         H2, H2, H2 ]
+      </names>
+   </beads>
+   <total_steps>100000</total_steps>
+   <cell shape='(3, 3)'>
+    [   3.37259417e+01,   2.06511833e-15,   2.06511833e-15,   0.00000000e+00,   3.37259417e+01, 
+        2.06511833e-15,   0.00000000e+00,   0.00000000e+00,   3.37259417e+01 ]
+   </cell>
+   <forces>
+      <socket>
+         <port>31415</port>
+      </socket>
+   </forces>
+   <output prefix=''>
+      <properties shape='(8)' filename='tut2a.md'>
+       [ step, time{picosecond}, conserved{kelvin}, temperature{kelvin}, potential{kelvin}, 
+         kinetic_cv{kelvin}, pressure_cv{megapascal}, volume ]
+      </properties>
+      <properties stride='20' shape='(1)' filename='tut2a.force'> [ atom_f{piconewton}(atom=0;bead=0) ] </properties>
+      <trajectory format='pdb' filename='tut2a.pos' stride='100' cell_units='angstrom'>positions{angstrom}</trajectory>
+      <checkpoint stride='1000' filename='tut2a.checkpoint'/>
+   </output>
+   <prng>
+      <state shape='(624)'>
+       [ 2687888409, 4059721984, 529212847, 1944050140, 549951740, 
+         753730274, 4256902940, 3644633819, 1619935418, 2926854959, 
+         3845596702, 3377185214, 672656208, 1522275289, 2252162595, 
+         3840064745, 4027492069, 3675681571, 2579879846, 1816332499, 
+         4032401752, 1911816378, 303445975, 1468438718, 4013747657, 
+         1340600813, 2333908485, 2694837801, 4170600699, 2510847348, 
+         3039951471, 3744192067, 1926386446, 1272375545, 1414207521, 
+         66179398, 4083890893, 4151044133, 576437212, 1676792606, 
+         434309634, 1907904212, 552501071, 2721977900, 1774218030, 
+         2379944892, 895572049, 964207007, 855123501, 322370220, 
+         2071560835, 311075834, 2622627631, 3049706185, 2343013325, 
+         68709345, 1862864050, 3480897554, 1688711674, 3849088037, 
+         2335410691, 2553458415, 3853338058, 2210199727, 2794071459, 
+         2398176951, 3934057850, 1698758425, 1011318686, 1806201471, 
+         1034736815, 3855360847, 835665231, 2475925733, 233924796, 
+         3024757758, 2198530484, 3673044703, 1249768122, 3962863565, 
+         3357863236, 2995035040, 307264231, 726406611, 2449569067, 
+         2105792248, 2511154863, 1776943467, 1288186977, 1069459630, 
+         4142069906, 2662399901, 2976669074, 3587203732, 2374529826, 
+         1425481845, 228954896, 829104572, 3792121363, 2155121068, 
+         4012537920, 4004560763, 1828234324, 523136808, 212778594, 
+         2400962328, 2941249333, 941934455, 1185399473, 1989697055, 
+         3876270640, 2356595322, 2240658826, 1455744954, 1294764103, 
+         197281598, 3596260716, 1784450322, 4229237399, 2625160461, 
+         3437563840, 99534139, 4231199313, 4186457231, 1356327267, 
+         11955050, 694326214, 3281619587, 1501920361, 4047724237, 
+         254407815, 1209336385, 2469757968, 3247917043, 467877924, 
+         714928015, 1424369871, 2112691093, 961450464, 1302826015, 
+         1508195287, 2682046824, 1166405749, 130758490, 669915191, 
+         3325468865, 2863429703, 99481154, 2455859519, 3512819878, 
+         2058734245, 713709489, 92681358, 1270820689, 2875258344, 
+         4089059727, 2319856617, 3246994482, 2375401460, 3526989769, 
+         2037481502, 1523778672, 4277357577, 3378312673, 1761280988, 
+         385602812, 2806072191, 263793228, 3893867788, 1122562696, 
+         3292179677, 196613098, 1412940405, 437753556, 2089537898, 
+         3093827021, 2543771523, 2707596589, 4247024898, 423016972, 
+         1950202748, 619404510, 1524092033, 2603783903, 1668886628, 
+         1610491330, 203643004, 378998824, 3077420296, 1135622483, 
+         1741156718, 4043803158, 134627695, 3826076900, 2236198903, 
+         1299249975, 1841801847, 1664600294, 3214378313, 4189671272, 
+         3480243241, 2314880827, 726164864, 1258895459, 1021877225, 
+         57278710, 2540601428, 2729779922, 1740214549, 1640865107, 
+         1355185385, 2109593488, 2195506700, 672372257, 2178115007, 
+         1875949822, 1689867492, 385658740, 2445406785, 271863064, 
+         988127097, 1025468932, 2359419817, 30505704, 3740615491, 
+         302654725, 68322970, 3937476624, 1133164597, 2115798914, 
+         320399345, 783710429, 2653212426, 3534685928, 1799928422, 
+         3374564924, 140092188, 2838741355, 118331603, 3274090979, 
+         2536288199, 424964681, 2624886533, 930882804, 2205394448, 
+         2184146172, 676812400, 3846276446, 3664199786, 1428020191, 
+         174713762, 1742043028, 1988587715, 250315220, 3460710952, 
+         518855886, 3301263820, 3376830340, 1924596217, 3991359611, 
+         4018324691, 2736101407, 3348220756, 4134954748, 1014806456, 
+         811815211, 2969949177, 1648717003, 1095340695, 3941199066, 
+         1442177871, 2118024477, 3440070762, 2652513624, 2449760687, 
+         3263443330, 2902806218, 3234417117, 1849567332, 947381041, 
+         3667048364, 951549915, 3479164436, 3858250612, 331400252, 
+         2281345388, 2762215954, 3082365401, 683228175, 3454398927, 
+         970279118, 2070406438, 3049304524, 1693733059, 175159517, 
+         1769171565, 2762326718, 2494712358, 1596534753, 696283870, 
+         2018059673, 92137961, 494184422, 392011733, 1385029818, 
+         934252405, 333359117, 3764822796, 1330799844, 1968964095, 
+         1099463842, 3602247127, 2198538609, 99239880, 3666952197, 
+         1538751175, 687515492, 1759850188, 1784319556, 219306934, 
+         3607066683, 3549791334, 1244006176, 3168276190, 2506130029, 
+         934365798, 4125460139, 2267772610, 4123099235, 3145641762, 
+         2282867996, 947174487, 2735752579, 1153570283, 1214198797, 
+         3843855592, 226542409, 1556151146, 2140750114, 173612017, 
+         3793649149, 513160329, 1696259753, 2196908248, 4236321655, 
+         3978054768, 3076169778, 1237756707, 794294503, 2478806329, 
+         3270485108, 21511829, 3648378180, 2173244083, 390728983, 
+         1613278496, 245589104, 1871555825, 840092166, 2005126608, 
+         2086709055, 346538249, 755528088, 4150217063, 1800593080, 
+         2996189003, 223378615, 26641502, 1408725657, 1055486622, 
+         2783260926, 2418422845, 1425876347, 2681749907, 689577833, 
+         2439224882, 1119191698, 3284738598, 3248369824, 2184806341, 
+         3827067703, 1403375638, 2039560728, 2026930258, 1439858255, 
+         3646642925, 357706083, 801162144, 200302113, 843383109, 
+         3953988752, 803642989, 133507707, 1890262095, 2010928680, 
+         153102298, 62155903, 277159866, 3184049271, 3470490419, 
+         1263803797, 1744789719, 291191777, 2104793752, 3710673355, 
+         690715888, 3985842110, 2609560703, 850539005, 86744360, 
+         1737104979, 1863808169, 1774594416, 295814460, 349948339, 
+         2998856642, 2965669633, 1901828086, 3978738887, 1547972061, 
+         3099911135, 2005717380, 567557764, 4005749125, 2160875982, 
+         3708061218, 71131479, 4020136758, 2494015768, 1649237263, 
+         3904477723, 398737933, 1060721700, 1863476301, 370356512, 
+         3071414126, 2579819024, 1413367122, 2902740002, 111597792, 
+         3291486874, 2640531015, 3168695648, 2512654909, 3959449531, 
+         2099836667, 1724339088, 1513859793, 1867797563, 72940112, 
+         150365030, 2695841664, 1822792143, 1313669546, 2967322181, 
+         520611643, 353667991, 2717535171, 3765848346, 388428102, 
+         1356267895, 3512676772, 370279636, 3846898162, 230096495, 
+         1637173159, 611261822, 1005164736, 269482378, 3515088803, 
+         3384787851, 219854487, 3527128574, 1621986556, 2351564858, 
+         1464556636, 3969432414, 4241153635, 3481875215, 2028710485, 
+         2552303669, 398357876, 502240174, 2783848798, 3029135000, 
+         3389310739, 2505116094, 142532114, 3164584552, 2476051612, 
+         3402430270, 3909441351, 3427500434, 334653597, 3680534388, 
+         994471388, 3554495285, 1194116172, 2229772907, 1080120321, 
+         764714490, 2033099135, 14870392, 1699063853, 4063486208, 
+         1292743360, 2032090912, 72238972, 161094465, 1452285444, 
+         2672671278, 1692937611, 1323803845, 3240748400, 4018998180, 
+         747254077, 236045767, 3239449578, 983232024, 3337514013, 
+         1251769771, 3333700522, 410670915, 987407435, 2475716801, 
+         2872258033, 4098868775, 1252507952, 3804640001, 1349395704, 
+         3776831082, 2921973556, 4089719272, 2209056770, 4132418611, 
+         1349045766, 1096167788, 946557058, 2742739413, 675697683, 
+         981116951, 3762459934, 735892043, 2820765771, 3285067216, 
+         2160644040, 3791763118, 3326789900, 4049571064, 2680776632, 
+         3569204094, 65929649, 3389067210, 3597945585, 1844146738, 
+         2700511765, 329482853, 1760204187, 923334769, 4064120545, 
+         3501525441, 185277522, 1241941790, 3591317416, 417403194, 
+         1300287444, 568015210, 1937417620, 1293297106, 1132926831, 
+         2866724791, 3257502829, 2947848120, 3895316838, 522557077, 
+         3227142004, 3090084150, 1099385887, 281296826, 1305525858, 
+         4048212751, 1083053479, 1851665893, 2417839863, 1623516667, 
+         3571192609, 3711731288, 2688150423, 1385750380, 3001410324, 
+         3992036671, 438613795, 1675062808, 126103207, 3806023665, 
+         3378609204, 3872710810, 3254661971, 3271656093, 2954958773, 
+         2955771203, 943499290, 1783244758, 27256593, 2736330207, 
+         2854314347, 1414980118, 3499653814, 2716003330, 1906739972, 
+         2097871403, 833490830, 860249641, 1359898654, 681385897, 
+         768010275, 1337229341, 2176361026, 1243749829, 2535464086, 
+         3587794549, 257320265, 1799338138, 2326145708 ]
+      </state>
+      <seed>12345</seed>
+      <set_pos>432</set_pos>
+      <gauss> -8.30560467e-01</gauss>
+   </prng>
+   <ensemble mode='npt'>
+      <pressure> 0 </pressure>
+      <barostat mode='isotropic'>
+         <thermostat mode='langevin'>
+            <tau units='femtosecond'> 250 </tau>
+         </thermostat>
+         <tau units='femtosecond'> 250 </tau>
+      </barostat>
+      <thermostat mode='pile_g'>
+         <tau>  1.03353433e+03</tau>
+         <ethermo>  2.24648494e-02</ethermo>
+      </thermostat>
+      <timestep>  4.13413730e+01</timestep>
+      <temperature>  7.91703800e-05</temperature>
+   </ensemble>
+</simulation>
diff --git a/tools/i-pi/examples/tutorial/tutorial-2/tutorial-2b.xml b/tools/i-pi/examples/tutorial/tutorial-2/tutorial-2b.xml
new file mode 100755
index 0000000000000000000000000000000000000000..d90bbc3e34de9dec78d65e80a72b550ed421b508
--- /dev/null
+++ b/tools/i-pi/examples/tutorial/tutorial-2/tutorial-2b.xml
@@ -0,0 +1,33 @@
+<simulation verbosity='high'>
+   <initialize nbeads='4'>
+      <file mode='chk'> tutorial-1_RESTART </file>
+   </initialize>
+   <output prefix='tut2b'>
+      <properties filename='md' stride='1'> [ step, time{picosecond}, conserved{kelvin}, temperature{kelvin}, potential{kelvin}, kinetic_cv{kelvin}, pressure_cv{megapascal}, volume ] </properties>
+      <properties filename='force' stride='20'> [atom_f{piconewton}(atom=0;bead=0)] </properties>
+      <trajectory filename='pos' stride='100' format='pdb' cell_units='angstrom'> positions{angstrom} </trajectory>
+      <checkpoint filename='checkpoint' stride='1000' overwrite='True'/>
+   </output>
+   <total_steps>100000</total_steps>
+   <prng> <seed> 31415 </seed> </prng>
+   <forces>
+      <socket mode="inet">
+         <address>localhost</address>
+         <port> 31415 </port>
+      </socket>
+   </forces>
+   <ensemble mode='npt'>
+      <barostat mode='isotropic'>
+         <thermostat mode='langevin'>
+            <tau units='femtosecond'> 250 </tau>
+         </thermostat>
+         <tau units='femtosecond'> 250 </tau>
+      </barostat>
+      <thermostat mode='pile_g'>
+         <tau units='femtosecond'> 25 </tau>
+      </thermostat>
+      <timestep units='femtosecond'> 1 </timestep>
+      <temperature units='kelvin'> 25 </temperature>
+      <pressure> 0 </pressure>
+   </ensemble>
+</simulation>
diff --git a/tools/i-pi/examples/tutorial/tutorial-3/our_ref.pdb b/tools/i-pi/examples/tutorial/tutorial-3/our_ref.pdb
new file mode 100755
index 0000000000000000000000000000000000000000..4734f806139c07453f305569746399cadae85a1e
--- /dev/null
+++ b/tools/i-pi/examples/tutorial/tutorial-3/our_ref.pdb
@@ -0,0 +1,174 @@
+CRYST1   39.115   39.115   39.115  90.00  90.00  90.00 P 1          1
+ATOM      1   H2   1     1       0.000   0.000   0.000  0.00  0.00            0
+ATOM      2   H2   1     1       5.582   5.582   0.000  0.00  0.00            0
+ATOM      3   H2   1     1       5.582   0.000   5.582  0.00  0.00            0
+ATOM      4   H2   1     1       0.000   5.582   5.582  0.00  0.00            0
+ATOM      5   H2   1     1       0.000   0.000  11.165  0.00  0.00            0
+ATOM      6   H2   1     1       5.582   5.582  11.165  0.00  0.00            0
+ATOM      7   H2   1     1       5.582   0.000  16.747  0.00  0.00            0
+ATOM      8   H2   1     1       0.000   5.582  16.747  0.00  0.00            0
+ATOM      9   H2   1     1       0.000   0.000  22.330  0.00  0.00            0
+ATOM     10   H2   1     1       5.582   5.582  22.330  0.00  0.00            0
+ATOM     11   H2   1     1       5.582   0.000  27.912  0.00  0.00            0
+ATOM     12   H2   1     1       0.000   5.582  27.912  0.00  0.00            0
+ATOM     13   H2   1     1       0.000   0.000  33.495  0.00  0.00            0
+ATOM     14   H2   1     1       5.582   5.582  33.495  0.00  0.00            0
+ATOM     15   H2   1     1       0.000  11.165   0.000  0.00  0.00            0
+ATOM     16   H2   1     1       5.582  16.747   0.000  0.00  0.00            0
+ATOM     17   H2   1     1       5.582  11.165   5.582  0.00  0.00            0
+ATOM     18   H2   1     1       0.000  16.747   5.582  0.00  0.00            0
+ATOM     19   H2   1     1       0.000  11.165  11.165  0.00  0.00            0
+ATOM     20   H2   1     1       5.582  16.747  11.165  0.00  0.00            0
+ATOM     21   H2   1     1       5.582  11.165  16.747  0.00  0.00            0
+ATOM     22   H2   1     1       0.000  16.747  16.747  0.00  0.00            0
+ATOM     23   H2   1     1       0.000  11.165  22.330  0.00  0.00            0
+ATOM     24   H2   1     1       5.582  16.747  22.330  0.00  0.00            0
+ATOM     25   H2   1     1       5.582  11.165  27.912  0.00  0.00            0
+ATOM     26   H2   1     1       0.000  16.747  27.912  0.00  0.00            0
+ATOM     27   H2   1     1       0.000  11.165  33.495  0.00  0.00            0
+ATOM     28   H2   1     1       5.582  16.747  33.495  0.00  0.00            0
+ATOM     29   H2   1     1       0.000  22.330   0.000  0.00  0.00            0
+ATOM     30   H2   1     1       5.582  27.912   0.000  0.00  0.00            0
+ATOM     31   H2   1     1       5.582  22.330   5.582  0.00  0.00            0
+ATOM     32   H2   1     1       0.000  27.912   5.582  0.00  0.00            0
+ATOM     33   H2   1     1       0.000  22.330  11.165  0.00  0.00            0
+ATOM     34   H2   1     1       5.582  27.912  11.165  0.00  0.00            0
+ATOM     35   H2   1     1       5.582  22.330  16.747  0.00  0.00            0
+ATOM     36   H2   1     1       0.000  27.912  16.747  0.00  0.00            0
+ATOM     37   H2   1     1       0.000  22.330  22.330  0.00  0.00            0
+ATOM     38   H2   1     1       5.582  27.912  22.330  0.00  0.00            0
+ATOM     39   H2   1     1       5.582  22.330  27.912  0.00  0.00            0
+ATOM     40   H2   1     1       0.000  27.912  27.912  0.00  0.00            0
+ATOM     41   H2   1     1       0.000  22.330  33.495  0.00  0.00            0
+ATOM     42   H2   1     1       5.582  27.912  33.495  0.00  0.00            0
+ATOM     43   H2   1     1       0.000  33.495   0.000  0.00  0.00            0
+ATOM     44   H2   1     1       5.582  33.495   5.582  0.00  0.00            0
+ATOM     45   H2   1     1       0.000  33.495  11.165  0.00  0.00            0
+ATOM     46   H2   1     1       5.582  33.495  16.747  0.00  0.00            0
+ATOM     47   H2   1     1       0.000  33.495  22.330  0.00  0.00            0
+ATOM     48   H2   1     1       5.582  33.495  27.912  0.00  0.00            0
+ATOM     49   H2   1     1       0.000  33.495  33.495  0.00  0.00            0
+ATOM     50   H2   1     1      11.165   0.000   0.000  0.00  0.00            0
+ATOM     51   H2   1     1      16.747   5.582   0.000  0.00  0.00            0
+ATOM     52   H2   1     1      16.747   0.000   5.582  0.00  0.00            0
+ATOM     53   H2   1     1      11.165   5.582   5.582  0.00  0.00            0
+ATOM     54   H2   1     1      11.165   0.000  11.165  0.00  0.00            0
+ATOM     55   H2   1     1      16.747   5.582  11.165  0.00  0.00            0
+ATOM     56   H2   1     1      16.747   0.000  16.747  0.00  0.00            0
+ATOM     57   H2   1     1      11.165   5.582  16.747  0.00  0.00            0
+ATOM     58   H2   1     1      11.165   0.000  22.330  0.00  0.00            0
+ATOM     59   H2   1     1      16.747   5.582  22.330  0.00  0.00            0
+ATOM     60   H2   1     1      16.747   0.000  27.912  0.00  0.00            0
+ATOM     61   H2   1     1      11.165   5.582  27.912  0.00  0.00            0
+ATOM     62   H2   1     1      11.165   0.000  33.495  0.00  0.00            0
+ATOM     63   H2   1     1      16.747   5.582  33.495  0.00  0.00            0
+ATOM     64   H2   1     1      11.165  11.165   0.000  0.00  0.00            0
+ATOM     65   H2   1     1      16.747  16.747   0.000  0.00  0.00            0
+ATOM     66   H2   1     1      16.747  11.165   5.582  0.00  0.00            0
+ATOM     67   H2   1     1      11.165  16.747   5.582  0.00  0.00            0
+ATOM     68   H2   1     1      11.165  11.165  11.165  0.00  0.00            0
+ATOM     69   H2   1     1      16.747  16.747  11.165  0.00  0.00            0
+ATOM     70   H2   1     1      16.747  11.165  16.747  0.00  0.00            0
+ATOM     71   H2   1     1      11.165  16.747  16.747  0.00  0.00            0
+ATOM     72   H2   1     1      11.165  11.165  22.330  0.00  0.00            0
+ATOM     73   H2   1     1      16.747  16.747  22.330  0.00  0.00            0
+ATOM     74   H2   1     1      16.747  11.165  27.912  0.00  0.00            0
+ATOM     75   H2   1     1      11.165  16.747  27.912  0.00  0.00            0
+ATOM     76   H2   1     1      11.165  11.165  33.495  0.00  0.00            0
+ATOM     77   H2   1     1      16.747  16.747  33.495  0.00  0.00            0
+ATOM     78   H2   1     1      11.165  22.330   0.000  0.00  0.00            0
+ATOM     79   H2   1     1      16.747  27.912   0.000  0.00  0.00            0
+ATOM     80   H2   1     1      16.747  22.330   5.582  0.00  0.00            0
+ATOM     81   H2   1     1      11.165  27.912   5.582  0.00  0.00            0
+ATOM     82   H2   1     1      11.165  22.330  11.165  0.00  0.00            0
+ATOM     83   H2   1     1      16.747  27.912  11.165  0.00  0.00            0
+ATOM     84   H2   1     1      16.747  22.330  16.747  0.00  0.00            0
+ATOM     85   H2   1     1      11.165  27.912  16.747  0.00  0.00            0
+ATOM     86   H2   1     1      11.165  22.330  22.330  0.00  0.00            0
+ATOM     87   H2   1     1      16.747  27.912  22.330  0.00  0.00            0
+ATOM     88   H2   1     1      16.747  22.330  27.912  0.00  0.00            0
+ATOM     89   H2   1     1      11.165  27.912  27.912  0.00  0.00            0
+ATOM     90   H2   1     1      11.165  22.330  33.495  0.00  0.00            0
+ATOM     91   H2   1     1      16.747  27.912  33.495  0.00  0.00            0
+ATOM     92   H2   1     1      11.165  33.495   0.000  0.00  0.00            0
+ATOM     93   H2   1     1      16.747  33.495   5.582  0.00  0.00            0
+ATOM     94   H2   1     1      11.165  33.495  11.165  0.00  0.00            0
+ATOM     95   H2   1     1      16.747  33.495  16.747  0.00  0.00            0
+ATOM     96   H2   1     1      11.165  33.495  22.330  0.00  0.00            0
+ATOM     97   H2   1     1      16.747  33.495  27.912  0.00  0.00            0
+ATOM     98   H2   1     1      11.165  33.495  33.495  0.00  0.00            0
+ATOM     99   H2   1     1      22.330   0.000   0.000  0.00  0.00            0
+ATOM    100   H2   1     1      27.912   5.582   0.000  0.00  0.00            0
+ATOM    101   H2   1     1      27.912   0.000   5.582  0.00  0.00            0
+ATOM    102   H2   1     1      22.330   5.582   5.582  0.00  0.00            0
+ATOM    103   H2   1     1      22.330   0.000  11.165  0.00  0.00            0
+ATOM    104   H2   1     1      27.912   5.582  11.165  0.00  0.00            0
+ATOM    105   H2   1     1      27.912   0.000  16.747  0.00  0.00            0
+ATOM    106   H2   1     1      22.330   5.582  16.747  0.00  0.00            0
+ATOM    107   H2   1     1      22.330   0.000  22.330  0.00  0.00            0
+ATOM    108   H2   1     1      27.912   5.582  22.330  0.00  0.00            0
+ATOM    109   H2   1     1      27.912   0.000  27.912  0.00  0.00            0
+ATOM    110   H2   1     1      22.330   5.582  27.912  0.00  0.00            0
+ATOM    111   H2   1     1      22.330   0.000  33.495  0.00  0.00            0
+ATOM    112   H2   1     1      27.912   5.582  33.495  0.00  0.00            0
+ATOM    113   H2   1     1      22.330  11.165   0.000  0.00  0.00            0
+ATOM    114   H2   1     1      27.912  16.747   0.000  0.00  0.00            0
+ATOM    115   H2   1     1      27.912  11.165   5.582  0.00  0.00            0
+ATOM    116   H2   1     1      22.330  16.747   5.582  0.00  0.00            0
+ATOM    117   H2   1     1      22.330  11.165  11.165  0.00  0.00            0
+ATOM    118   H2   1     1      27.912  16.747  11.165  0.00  0.00            0
+ATOM    119   H2   1     1      27.912  11.165  16.747  0.00  0.00            0
+ATOM    120   H2   1     1      22.330  16.747  16.747  0.00  0.00            0
+ATOM    121   H2   1     1      22.330  11.165  22.330  0.00  0.00            0
+ATOM    122   H2   1     1      27.912  16.747  22.330  0.00  0.00            0
+ATOM    123   H2   1     1      27.912  11.165  27.912  0.00  0.00            0
+ATOM    124   H2   1     1      22.330  16.747  27.912  0.00  0.00            0
+ATOM    125   H2   1     1      22.330  11.165  33.495  0.00  0.00            0
+ATOM    126   H2   1     1      27.912  16.747  33.495  0.00  0.00            0
+ATOM    127   H2   1     1      22.330  22.330   0.000  0.00  0.00            0
+ATOM    128   H2   1     1      27.912  27.912   0.000  0.00  0.00            0
+ATOM    129   H2   1     1      27.912  22.330   5.582  0.00  0.00            0
+ATOM    130   H2   1     1      22.330  27.912   5.582  0.00  0.00            0
+ATOM    131   H2   1     1      22.330  22.330  11.165  0.00  0.00            0
+ATOM    132   H2   1     1      27.912  27.912  11.165  0.00  0.00            0
+ATOM    133   H2   1     1      27.912  22.330  16.747  0.00  0.00            0
+ATOM    134   H2   1     1      22.330  27.912  16.747  0.00  0.00            0
+ATOM    135   H2   1     1      22.330  22.330  22.330  0.00  0.00            0
+ATOM    136   H2   1     1      27.912  27.912  22.330  0.00  0.00            0
+ATOM    137   H2   1     1      27.912  22.330  27.912  0.00  0.00            0
+ATOM    138   H2   1     1      22.330  27.912  27.912  0.00  0.00            0
+ATOM    139   H2   1     1      22.330  22.330  33.495  0.00  0.00            0
+ATOM    140   H2   1     1      27.912  27.912  33.495  0.00  0.00            0
+ATOM    141   H2   1     1      22.330  33.495   0.000  0.00  0.00            0
+ATOM    142   H2   1     1      27.912  33.495   5.582  0.00  0.00            0
+ATOM    143   H2   1     1      22.330  33.495  11.165  0.00  0.00            0
+ATOM    144   H2   1     1      27.912  33.495  16.747  0.00  0.00            0
+ATOM    145   H2   1     1      22.330  33.495  22.330  0.00  0.00            0
+ATOM    146   H2   1     1      27.912  33.495  27.912  0.00  0.00            0
+ATOM    147   H2   1     1      22.330  33.495  33.495  0.00  0.00            0
+ATOM    148   H2   1     1      33.495   0.000   0.000  0.00  0.00            0
+ATOM    149   H2   1     1      33.495   5.582   5.582  0.00  0.00            0
+ATOM    150   H2   1     1      33.495   0.000  11.165  0.00  0.00            0
+ATOM    151   H2   1     1      33.495   5.582  16.747  0.00  0.00            0
+ATOM    152   H2   1     1      33.495   0.000  22.330  0.00  0.00            0
+ATOM    153   H2   1     1      33.495   5.582  27.912  0.00  0.00            0
+ATOM    154   H2   1     1      33.495   0.000  33.495  0.00  0.00            0
+ATOM    155   H2   1     1      33.495  11.165   0.000  0.00  0.00            0
+ATOM    156   H2   1     1      33.495  16.747   5.582  0.00  0.00            0
+ATOM    157   H2   1     1      33.495  11.165  11.165  0.00  0.00            0
+ATOM    158   H2   1     1      33.495  16.747  16.747  0.00  0.00            0
+ATOM    159   H2   1     1      33.495  11.165  22.330  0.00  0.00            0
+ATOM    160   H2   1     1      33.495  16.747  27.912  0.00  0.00            0
+ATOM    161   H2   1     1      33.495  11.165  33.495  0.00  0.00            0
+ATOM    162   H2   1     1      33.495  22.330   0.000  0.00  0.00            0
+ATOM    163   H2   1     1      33.495  27.912   5.582  0.00  0.00            0
+ATOM    164   H2   1     1      33.495  22.330  11.165  0.00  0.00            0
+ATOM    165   H2   1     1      33.495  27.912  16.747  0.00  0.00            0
+ATOM    166   H2   1     1      33.495  22.330  22.330  0.00  0.00            0
+ATOM    167   H2   1     1      33.495  27.912  27.912  0.00  0.00            0
+ATOM    168   H2   1     1      33.495  22.330  33.495  0.00  0.00            0
+ATOM    169   H2   1     1      33.495  33.495   0.000  0.00  0.00            0
+ATOM    170   H2   1     1      33.495  33.495  11.165  0.00  0.00            0
+ATOM    171   H2   1     1      33.495  33.495  22.330  0.00  0.00            0
+ATOM    172   H2   1     1      33.495  33.495  33.495  0.00  0.00            0
+END
diff --git a/tools/i-pi/examples/tutorial/tutorial-3/tutorial-3_npt.xml b/tools/i-pi/examples/tutorial/tutorial-3/tutorial-3_npt.xml
new file mode 100755
index 0000000000000000000000000000000000000000..2392797e0163251b09806f95773ce9591e1be8d9
--- /dev/null
+++ b/tools/i-pi/examples/tutorial/tutorial-3/tutorial-3_npt.xml
@@ -0,0 +1,31 @@
+<simulation verbosity='medium'>
+   <initialize nbeads='16'>
+      <file mode='chk'> tutorial-3_RESTART </file>
+   </initialize>
+   <output prefix='tut3_npt'>
+      <properties filename='md' stride='1'> [ step, time{picosecond}, conserved{kelvin}, temperature{kelvin}, potential{kelvin}, kinetic_cv{kelvin}, pressure_cv{megapascal}, volume ] </properties>
+      <trajectory filename='pos' stride='100' format='pdb' cell_units='angstrom'> positions{angstrom} </trajectory>
+      <checkpoint filename='checkpoint' stride='1000' overwrite='True'/>
+   </output>
+   <total_steps> ??? </total_steps>
+   <forces>
+      <socket mode="???">
+         <address>localhost</address>
+         <port> 31415 </port>
+      </socket>
+   </forces>
+   <ensemble mode='npt'>
+      <barostat mode='???'>
+         <thermostat mode='???'>
+            <tau units='femtosecond'> ??? </tau>
+         </thermostat>
+         <tau units='femtosecond'> ??? </tau>
+      </barostat>
+      <thermostat mode='???'>
+         <tau units='femtosecond'> ??? </tau>
+      </thermostat>
+      <timestep units='femtosecond'> ??? </timestep>
+      <temperature units='kelvin'>25</temperature>
+      <pressure> 0 </pressure>
+   </ensemble>
+</simulation>
diff --git a/tools/i-pi/examples/tutorial/tutorial-3/tutorial-3_nvt.xml b/tools/i-pi/examples/tutorial/tutorial-3/tutorial-3_nvt.xml
new file mode 100755
index 0000000000000000000000000000000000000000..7a333be0f1d721a2a1bf8ea88d7ab360d1d2f6cd
--- /dev/null
+++ b/tools/i-pi/examples/tutorial/tutorial-3/tutorial-3_nvt.xml
@@ -0,0 +1,25 @@
+<simulation verbosity='medium'>
+   <initialize nbeads='16'>
+      <file mode='pdb'> our_ref.pdb </file>
+      <velocities mode='thermal' units='kelvin'> ??? </velocities>
+   </initialize>
+   <output prefix='tut3_nvt'>
+      <properties filename='md' stride='1'> [ step, time{picosecond}, conserved{kelvin}, temperature{kelvin}, potential{kelvin}, kinetic_cv{kelvin}, pressure_cv{megapascal} ] </properties>
+      <trajectory filename='pos' stride='100' format='pdb' cell_units='angstrom'> positions{angstrom} </trajectory>
+      <checkpoint filename='checkpoint' stride='1000' overwrite='True'/>
+   </output>
+   <total_steps> ??? </total_steps>
+   <forces>
+      <socket mode="???">
+         <address>localhost</address>
+         <port> 31415 </port>
+      </socket>
+   </forces>
+   <ensemble mode='nvt'>
+      <thermostat mode='???'>
+         <tau units='femtosecond'> ??? </tau>
+      </thermostat>
+      <timestep units='femtosecond'> ??? </timestep>
+      <temperature units='kelvin'>25</temperature>
+   </ensemble>
+</simulation>
diff --git a/tools/i-pi/i-pi b/tools/i-pi/i-pi
new file mode 100755
index 0000000000000000000000000000000000000000..fa6a1ae623045dede3927bbf8ef52ae50c6b8b27
--- /dev/null
+++ b/tools/i-pi/i-pi
@@ -0,0 +1,60 @@
+#!/usr/bin/python
+
+"""Main script from which the simulation is run.
+
+Deals with creation of the simulation object, reading the input file and
+initialising the system.
+
+Run using:
+      i-pi input_file.xml
+
+Where 'input_file.xml' should be replaced by the name of the xml input file from
+which the system data will be read. For a description of how the input file
+should be formatted, see the reference manual.
+
+Functions:
+   main: Runs the simulation.
+"""
+
+import sys
+from ipi.engine import simulation
+from ipi.inputs.simulation import InputSimulation
+from ipi.utils.io.io_xml import *
+from ipi.utils.messages import banner, help, verbosity
+
+def main(file_name):
+   """Runs the simulation.
+
+   Will run automatically when the module is used as a script.
+   """
+
+   ifile = open(file_name,"r")
+   xmlrestart = xml_parse_file(ifile) # Parses the file.
+   ifile.close()
+
+   simrestart = InputSimulation()
+   # Checks the input and partitions it appropriately.
+   simrestart.parse(xmlrestart.fields[0][1])
+   # Here we must do this manually; from here on everything should be automated by the messages classes
+   if simrestart.verbosity.fetch() != "quiet" :
+      banner()
+      print " # i-pi starting from input file: ", file_name
+   if simrestart.verbosity.fetch() != "quiet" and simrestart.verbosity.fetch() != "low" :
+      print " --- begin input file content --- "
+      ifile = open(file_name,"r")
+      for line in ifile.readlines():
+         print line,
+      ifile.close()
+      print " ---  end input file content  --- "
+
+   simul = simrestart.fetch() # Creates the appropriate simulation object.
+   simul.run()
+
+   del simul
+
+#This is what is run if the file is run as a script.
+if __name__ == '__main__':
+   if (len(sys.argv) != 2):
+      help()
+   else:
+      main(sys.argv[1])
diff --git a/tools/i-pi/ipi/README b/tools/i-pi/ipi/README
new file mode 100644
index 0000000000000000000000000000000000000000..a775b2066efafd7d90dba4feb664602cdd760eb9
--- /dev/null
+++ b/tools/i-pi/ipi/README
@@ -0,0 +1,14 @@
+ -- Source code directory --
+
+ * This is the main source directory.
+
+ * Files:
+   - i-pi: Runs the simulation.
+
+ * Directories:
+   - engine: Holds the modules containing the objects used during the 
+      simulation.
+   - interfaces: Holds the modules containing the socket interface code.
+   - utils: Holds the modules containing utility functions.
+   - inputs: Holds the modules that deals with reading the input and the 
+      restart mechanism.
diff --git a/tools/i-pi/ipi/__init__.py b/tools/i-pi/ipi/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..0ed5b4dbf5b5d6958ff0479f6c365302811b402a
--- /dev/null
+++ b/tools/i-pi/ipi/__init__.py
@@ -0,0 +1 @@
+__all__ = ["engine",  "inputs",  "interfaces", "utils"]
diff --git a/tools/i-pi/ipi/engine/README b/tools/i-pi/ipi/engine/README
new file mode 100644
index 0000000000000000000000000000000000000000..0ce3661b3590bc5fc9922b014d25fe5f5021e82e
--- /dev/null
+++ b/tools/i-pi/ipi/engine/README
@@ -0,0 +1,18 @@
+ -- Engine code directory --
+
+ * This is the directory containing all the major class definitions.
+
+ * Files:
+   - atoms.py: Deals with classical simulations.
+   - barostats.py: Deals with constant pressure simulations.
+   - beads.py: Deals with quantum simulations.
+   - cell.py: Deals with the simulation box.
+   - ensembles.py: Deals with the different ensembles.
+   - forces.py: Deals with creating the jobs to send to the driver code.
+   - initializer.py: Deals with initialization of the simulation.
+   - normalmodes.py: Deals with the normal mode transformations.
+   - outputs.py: Deals with the output files.
+   - properties.py: Deals with calculating all the output properties.
+   - simulation.py: Deals with all the top level information, such as 
+      input/output.
+   - thermostats.py: Deals with constant temperature simulations.
diff --git a/tools/i-pi/ipi/engine/__init__.py b/tools/i-pi/ipi/engine/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..609556a5e095c2e5944aab2360eeb8abf7790581
--- /dev/null
+++ b/tools/i-pi/ipi/engine/__init__.py
@@ -0,0 +1,3 @@
+__all__ = ["atoms", "cell", "simulation", "forces", "ensembles", "properties",
+           "thermostats", "barostats", "beads", "outputs", "normalmodes",
+           "initializer" ]
diff --git a/tools/i-pi/ipi/engine/atoms.py b/tools/i-pi/ipi/engine/atoms.py
new file mode 100644
index 0000000000000000000000000000000000000000..02ffcd75515197215e4f33b7be1884352cd81c1a
--- /dev/null
+++ b/tools/i-pi/ipi/engine/atoms.py
@@ -0,0 +1,269 @@
+"""Contains the classes which deal with the atoms.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Used for holding information about the atoms, including their positions, masses
+momenta and kinetic energy. Has separate classes for accessing the global
+arrays of atoms and for individual atoms.
+
+Classes:
+   Atom: Class with methods dealing with individual atoms.
+   Atoms: Class with methods dealing with all the atoms.
+"""
+
+__all__ = ['Atoms', 'Atom']
+
+import numpy as np
+from ipi.utils.depend import *
+from ipi.utils import units
+
+class Atom(dobject):
+   """Represent an atom, with position, velocity, mass and related properties.
+
+   This is actually only an interface to the Atoms class, i.e. only stores
+   views of the large arrays which contain all the coordinates.
+
+   Attributes:
+      kin: The kinetic energy of the atom.
+      kstress: The contribution of the atom to the kinetic stress tensor.
+
+   Depend objects:
+      p: The three components of the momentum of the atom.
+      q: The three components of the position of the atom.
+      m: The mass of the atom.
+      name: The name of the atom.
+      m3: An array of 3 elements with each element being the mass of the atom.
+         Used when each degree of freedom needs to be divided by the mass.
+   """
+
+   def __init__(self, system, index):
+      """Initialises Atom.
+
+      Args:
+         system: An Atoms object containing the required atom.
+         index: An integer giving the index of the required atom in the atoms
+            list. Note that indices start from 0.
+      """
+
+      dset(self,"p",system.p[3*index:3*index+3])
+      dset(self,"q",system.q[3*index:3*index+3])
+      dset(self,"m",system.m[index:index+1])
+      dset(self,"name",system.names[index:index+1])
+      dset(self,"m3",system.m3[3*index:3*index+3])
+
+   @property
+   def kin(self):
+      """Calculates the contribution of the atom to the kinetic energy."""
+
+      return np.dot(self.p,self.p)/(2.0*self.m)
+
+   @property
+   def kstress(self):
+      """Calculates the contribution of the atom to the kinetic stress
+      tensor.
+      """
+
+      p = depstrip(self.p)
+      ks = numpy.zeros((3,3),float)
+      for i in range(3):
+         for j in range(i,3):
+            ks[i,j] = p[i]*p[j]
+      return ks/self.m
+
+
+class Atoms(dobject):
+   """Storage for the atoms' positions, masses and velocities.
+
+   Everything is stored as 3*n sized contiguous arrays,
+   and a convenience-access is provided through a list of Atom objects.
+
+   Attributes:
+      natoms: The number of atoms.
+
+   Depend objects:
+      p: An array giving the components of the atom positions.
+      q: An array giving the components of the atom momenta.
+      m: An array giving the atom masses.
+      names: An array giving the atom names.
+      m3: An array of 3*n elements where each element of m has been copied
+         three times. Used when each degree of freedom needs to be divided
+         by the mass.
+      M: The total mass of all the atoms.
+      kin: The total kinetic energy of the atoms. Depends on p and m3.
+      kstress: The contribution of the atoms to the kinetic stress tensor.
+         Depends on px, py, pz and m.
+      qx: An array giving the x components of the positions.
+      qy: An array giving the y components of the positions.
+      qz: An array giving the z components of the positions.
+      px: An array giving the x components of the momenta.
+      py: An array giving the y components of the momenta.
+      pz: An array giving the z components of the momenta.
+   """
+
+
+   def __init__(self, natoms, _prebind=None):
+      """Initialises Atoms.
+
+      Each replica and the centroid coordinate are all held as Atoms objects,
+      and so slices of the global position and momentum arrays must be used in
+      the initialisation so that they always agree with each other.
+
+      Args:
+         natoms: An integer giving the number of atoms.
+         _prebind: An optional tuple of four elements; a depend_array of length
+            3*natoms for the positions, another for the momenta, a depend_array
+            of length natoms for the masses and another for the names.
+      """
+
+      self.natoms = natoms
+
+      if _prebind is None:
+         dset(self,"q",depend_array(name="q",value=np.zeros(3*natoms, float)))
+         dset(self,"p",depend_array(name="p",value=np.zeros(3*natoms, float)))
+         dset(self,"m",depend_array(name="m",value=np.zeros(natoms, float)))
+         dset(self,"names",
+            depend_array(name="names",value=np.zeros(natoms, np.dtype('|S6'))))
+      else:
+         dset(self,"q",_prebind[0])
+         dset(self,"p",_prebind[1])
+         dset(self,"m",_prebind[2])
+         dset(self,"names",_prebind[3])
+
+      self.px = self.p[0:3*natoms:3]
+      self.py = self.p[1:3*natoms:3]
+      self.pz = self.p[2:3*natoms:3]
+      self.qx = self.q[0:3*natoms:3]
+      self.qy = self.q[1:3*natoms:3]
+      self.qz = self.q[2:3*natoms:3]
+
+      dset(self,"m3",
+         depend_array(name="m3",value=np.zeros(3*natoms, float),func=self.mtom3,
+            dependencies=[dget(self,"m")]))
+
+      dset(self,"M",
+         depend_value(name="M",func=self.get_msum,
+            dependencies=[dget(self,"m")]) )
+      dset(self,"kin",
+         depend_value(name="kin",func=self.get_kin,
+            dependencies=[dget(self,"p"),dget(self,"m3")]) )
+      dset(self,"kstress",
+         depend_value(name="kstress",func=self.get_kstress,
+            dependencies=[dget(self,"px"),dget(self,"py"),dget(self,"pz"),dget(self,"m")]) )
+
+   def copy(self):
+      """Creates a new Atoms object.
+
+      Returns:
+         An Atoms object with the same q, p, m and names arrays as the original.
+      """
+
+      newat = Atoms(self.natoms)
+      newat.q[:] = self.q
+      newat.p[:] = self.p
+      newat.m[:] = self.m
+      newat.names[:] = self.names
+      return newat
+
+   def __len__(self):
+      """Length function.
+
+      This is called whenever the standard function len(atoms) is used.
+
+      Returns:
+         The number of atoms.
+      """
+
+      return self.natoms
+
+   def __getitem__(self,index):
+      """Overwrites standard getting function.
+
+      This is called whenever the standard function atoms[index] is used.
+      Returns an Atom object with the appropriate position and momenta arrays.
+      Note that they are dynamically generated each time an Atom needs to be
+      accessed, as this reduces the number of depend objects that need to be
+      held at any one time.
+
+      Args:
+         index: The index of the atom to be accessed.
+
+      Returns:
+         The atom given by the index.
+      """
+
+      return Atom(self,index)
+
+   def __setitem__(self,index,value):
+      """Overwrites standard setting function.
+
+      This is called whenever the standard function atoms[index]=value is used.
+      Changes the position and momenta of the appropriate slice of the global
+      position and momentum arrays to those given by value.
+      Note that they are dynamically generated each time an Atom needs to be
+      accessed, as this reduces the number of depend objects that need to be
+      held at any one time.
+
+      Args:
+         index: The atom to be changed.
+         value: The Atom object that holds the new values.
+      """
+
+      pat = Atom(self,index)
+      pat.p = value.p
+      pat.q = value.q
+      pat.m = value.m
+      pat.name = value.name
+
+   def get_msum(self):
+      """Calculates the total mass."""
+
+      return self.m.sum()
+
+   def mtom3(self):
+      """Returns a 3*n mass array.
+
+      Returns:
+         An array of 3*n elements where each element of m has been copied
+         three times. Used when each degree of freedom needs to be divided
+         by the mass.
+      """
+
+      m3 = np.zeros(3*self.natoms,float)
+      m3[0:3*self.natoms:3] = self.m
+      m3[1:3*self.natoms:3] = m3[0:3*self.natoms:3]
+      m3[2:3*self.natoms:3] = m3[0:3*self.natoms:3]
+      return m3
+
+   def get_kin(self):
+      """Calculates the total kinetic energy of the system."""
+
+      p = depstrip(self.p)
+      return 0.5*np.dot(p,p/depstrip(self.m3))
+
+   def get_kstress(self):
+      """Calculates the total contribution of the atoms to the kinetic stress
+      tensor -- not volume-scaled
+      """
+
+      ks = np.zeros((3,3),float)
+      ks[0,0] = np.dot(self.px,self.px/self.m)
+      ks[1,1] = np.dot(self.py,self.py/self.m)
+      ks[2,2] = np.dot(self.pz,self.pz/self.m)
+      ks[0,1] = np.dot(self.px,self.py/self.m)
+      ks[0,2] = np.dot(self.px,self.pz/self.m)
+      ks[1,2] = np.dot(self.py,self.pz/self.m)
+      return ks
diff --git a/tools/i-pi/ipi/engine/barostats.py b/tools/i-pi/ipi/engine/barostats.py
new file mode 100644
index 0000000000000000000000000000000000000000..5dbc6049d5a4023f9debef4ff0ef6838a9fecaaf
--- /dev/null
+++ b/tools/i-pi/ipi/engine/barostats.py
@@ -0,0 +1,450 @@
+"""Contains the classes that deal with constant pressure dynamics.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Contains the algorithms which propagate the position and momenta steps in the
+constant pressure ensemble. Holds the properties directly related to
+these ensembles, such as the internal and external pressure and stress.
+
+Classes:
+   Barostat: Base barostat class with the generic methods and attributes.
+   BaroBZP: Generates dynamics with a stochastic barostat -- see
+            Ceriotti, More, Manolopoulos, Comp. Phys. Comm. 2013 for
+            implementation details.
+"""
+
+# NB: this file also contains a 'BaroMHT' class, that follows more closely the
+# Martyna, Hughes, Tuckerman implementation of a PIMD barostat. However it is so
+# close to the BZP implementation that we disabled it for the sake of simplicity
+# BaroMHT: Generates dynamics according to the method of G. Martyna, A.
+# Hughes and M. Tuckerman, J. Chem. Phys., 110, 3275.
+
+__all__ = ['Barostat', 'BaroBZP']
+
+import numpy as np
+from ipi.utils.depend import *
+from ipi.utils.units import *
+from ipi.utils.mathtools import eigensystem_ut3x3, invert_ut3x3, exp_ut3x3, det_ut3x3
+from ipi.inputs.thermostats import InputThermo
+from ipi.engine.thermostats import Thermostat
+
+class Barostat(dobject):
+   """Base barostat class.
+
+   Gives the standard methods and attributes needed in all the barostat classes.
+
+   Attributes:
+      beads: A beads object giving the atoms positions
+      cell: A cell object giving the system box.
+      forces: A forces object giving the virial and the forces acting on
+         each bead.
+      nm: An object to do the normal mode transformation.
+      thermostat: A thermostat coupled to the barostat degrees of freedom.
+      mdof: The number of atomic degrees of freedom
+
+   Depend objects:
+      dt: The time step used in the algorithms. Depends on the simulation dt.
+      temp: The (classical) simulation temperature. Higher than the physical
+         temperature by a factor of the number of beads.
+      tau: The timescale associated with the piston
+      pext: The external pressure
+      ebaro: The conserved quantity associated with the barostat.
+      pot: The potential energy associated with the barostat.
+      kstress: The system kinetic stress tensor.
+      stress: The system stress tensor.
+      press: The system pressure.
+   """
+
+   def __init__(self, dt=None, temp=None, pext=None, tau=None, ebaro=None, thermostat=None):
+      """Initialises base barostat class.
+
+      Note that the external stress and the external pressure are synchronized.
+      This makes most sense going from the stress to the pressure, but if you
+      must go in the other direction the stress is assumed to be isotropic.
+
+      Args:
+         dt: Optional float giving the time step for the algorithms. Defaults
+            to the simulation dt.
+         temp: Optional float giving the temperature for the thermostat.
+            Defaults to the simulation temp.
+         pext: Optional float giving the external pressure.
+         tau: Optional float giving the time scale associated with the barostat.
+         ebaro: Optional float giving the conserved quantity already stored
+            in the barostat initially. Used on restart.
+         thermostat: The thermostat connected to the barostat degree of freedom.
+      """
+
+      dset(self,"dt",depend_value(name='dt'))
+      if not dt is None:
+         self.dt = dt
+      else: self.dt = 1.0
+
+      dset(self, "temp", depend_value(name="temp"))
+      if not temp is None:
+         self.temp = temp
+      else: self.temp = 1.0
+
+      dset(self,"tau",depend_value(name='tau'))
+      if not tau is None:
+         self.tau = tau
+      else: self.tau = 1.0
+
+      dset(self,"pext",depend_value(name='pext'))
+      if not pext is None:
+         self.pext = pext
+      else: self.pext = 0.0
+
+      dset(self,"ebaro",depend_value(name='ebaro'))
+      if not ebaro is None:
+         self.ebaro = ebaro
+      else: self.ebaro = 0.0
+
+      if thermostat is None:
+         thermostat = Thermostat()
+      self.thermostat = thermostat
+
+      # pipes timestep and temperature to the thermostat
+      deppipe(self,"dt", self.thermostat, "dt")
+      deppipe(self, "temp", self.thermostat,"temp")
+
+
+   def bind(self, beads, nm, cell, forces, prng=None, fixdof=None):
+      """Binds beads, cell and forces to the barostat.
+
+      This takes a beads object, a cell object and a forcefield object and
+      makes them members of the barostat. It also then creates the objects that
+      will hold the data needed in the barostat algorithms and the dependency
+      network.
+
+      Args:
+         beads: The beads object from which the bead positions are taken.
+         nm: The normal modes propagator object
+         cell: The cell object from which the system box is taken.
+         forces: The forcefield object from which the force and virial are
+            taken.
+         prng: The parent PRNG to bind the thermostat to
+         fixdof: The number of blocked degrees of freedom.
+      """
+
+      self.beads = beads
+      self.cell = cell
+      self.forces = forces
+      self.nm = nm
+
+      dset(self,"pot",
+         depend_value(name='pot', func=self.get_pot,
+            dependencies=[ dget(cell,"V"), dget(self,"pext") ]))
+      dset(self,"kstress",
+         depend_value(name='kstress', func=self.get_kstress,
+            dependencies=[ dget(beads,"q"), dget(beads,"qc"), dget(beads,"pc"), dget(forces,"f") ]))
+      dset(self,"stress",
+         depend_value(name='stress', func=self.get_stress,
+            dependencies=[ dget(self,"kstress"), dget(cell,"V"), dget(forces,"vir") ]))
+      dset(self,"press",
+         depend_value(name='press', func=self.get_press,
+            dependencies=[ dget(self,"stress") ]))
+
+      if fixdof is None:
+         self.mdof = float(self.beads.natoms)*3.0
+      else:
+         self.mdof = float(self.beads.natoms)*3.0 - float(fixdof)
+
+   def get_pot(self):
+      """Calculates the elastic strain energy of the cell."""
+
+      # NOTE: since there are nbeads replicas of the unit cell, the enthalpy contains a nbeads factor
+      return self.cell.V*self.pext*self.beads.nbeads
+
+   def get_kstress(self):
+      """Calculates the quantum centroid virial kinetic stress tensor
+      estimator.
+      """
+
+      kst = np.zeros((3,3),float)
+      q = depstrip(self.beads.q)
+      qc = depstrip(self.beads.qc)
+      pc = depstrip(self.beads.pc)
+      m = depstrip(self.beads.m)
+      na3 = 3*self.beads.natoms
+      fall = depstrip(self.forces.f)
+
+      for b in range(self.beads.nbeads):
+         for i in range(3):
+            for j in range(i,3):
+               kst[i,j] -= np.dot(q[b,i:na3:3] - qc[i:na3:3],
+                  fall[b,j:na3:3])
+
+      # NOTE: In order to have a well-defined conserved quantity, the Nf kT term in the
+      # diagonal stress estimator must be taken from the centroid kinetic energy.
+      for i in range(3):
+         kst[i,i] += np.dot(pc[i:na3:3],pc[i:na3:3]/m) *self.beads.nbeads
+
+      return kst
+
+   def get_stress(self):
+      """Calculates the internal stress tensor."""
+
+      return (self.kstress + self.forces.vir)/self.cell.V
+
+   def get_press(self):
+      """Calculates the internal pressure."""
+
+      return np.trace(self.stress)/3.0
+
+   def pstep(self):
+      """Dummy momenta propagator step."""
+
+      pass
+
+   def qcstep(self):
+      """Dummy centroid position propagator step."""
+
+      pass
+
+
+class BaroBZP(Barostat):
+   """Bussi-Zykova-Parrinello barostat class.
+
+   Just extends the standard class adding finite-dt propagators for the barostat
+   velocities, positions, piston.
+
+   Depend objects:
+      p: The momentum associated with the volume degree of freedom.
+      m: The mass associated with the volume degree of freedom.
+   """
+
+   def __init__(self, dt=None, temp=None, pext=None, tau=None, ebaro=None, thermostat=None, p=None):
+      """Initializes BZP barostat.
+
+      Args:
+         dt: Optional float giving the time step for the algorithms. Defaults
+            to the simulation dt.
+         temp: Optional float giving the temperature for the thermostat.
+            Defaults to the simulation temp.
+         pext: Optional float giving the external pressure.
+         tau: Optional float giving the time scale associated with the barostat.
+         ebaro: Optional float giving the conserved quantity already stored
+            in the barostat initially. Used on restart.
+         thermostat: The thermostat connected to the barostat degree of freedom.
+         p: Optional initial volume conjugate momentum. Defaults to 0.
+      """
+
+
+      super(BaroBZP, self).__init__(dt, temp, pext, tau, ebaro, thermostat)
+
+      dset(self,"p", depend_array(name='p', value=np.atleast_1d(0.0)))
+
+      if not p is None:
+         self.p = np.asarray([p])
+      else:
+         self.p = 0.0
+
+   def bind(self, beads, nm, cell, forces, prng=None, fixdof=None):
+      """Binds beads, cell and forces to the barostat.
+
+      This takes a beads object, a cell object and a forcefield object and
+      makes them members of the barostat. It also then creates the objects that
+      will hold the data needed in the barostat algorithms and the dependency
+      network.
+
+      Args:
+         beads: The beads object from which the bead positions are taken.
+         nm: The normal modes propagator object
+         cell: The cell object from which the system box is taken.
+         forces: The forcefield object from which the force and virial are
+            taken.
+         prng: The parent PRNG to bind the thermostat to
+         fixdof: The number of blocked degrees of freedom.
+      """
+
+      super(BaroBZP, self).bind(beads, nm, cell, forces, prng, fixdof)
+
+      # obtain the thermostat mass from the given time constant
+      # note that the barostat temperature is nbeads times the physical T
+      dset(self,"m", depend_array(name='m', value=np.atleast_1d(0.0),
+         func=(lambda:np.asarray([self.tau**2*3*self.beads.natoms*Constants.kb*self.temp])),
+            dependencies=[ dget(self,"tau"), dget(self,"temp") ] ))
+
+      # binds the thermostat to the piston degrees of freedom
+      self.thermostat.bind(pm=[ self.p, self.m ], prng=prng)
+
+      dset(self,"kin",depend_value(name='kin',
+         func=(lambda:0.5*self.p[0]**2/self.m[0]),
+            dependencies= [dget(self,"p"), dget(self,"m")] ) )
+
+      # the barostat energy must be computed from bits & pieces (overwrite the default)
+      dset(self, "ebaro", depend_value(name='ebaro', func=self.get_ebaro,
+         dependencies=[ dget(self, "kin"), dget(self, "pot"),
+            dget(self.cell, "V"), dget(self, "temp"),
+               dget(self.thermostat,"ethermo")] ))
+
+   def get_ebaro(self):
+      """Calculates the barostat conserved quantity."""
+
+      return self.thermostat.ethermo + self.kin + self.pot - np.log(self.cell.V)*Constants.kb*self.temp
+
+
+   def pstep(self):
+      """Propagates the momenta for half a time step."""
+
+      dthalf = self.dt*0.5
+      dthalf2 = dthalf**2
+      dthalf3 = dthalf**3/3.0
+
+      # This differs from the BZP thermostat in that it uses just one kT in the propagator.
+      # This leads to an ensemble equaivalent to Martyna-Hughes-Tuckermann for both fixed and moving COM
+      # Anyway, it is a small correction so whatever.
+      self.p += dthalf*3.0*( self.cell.V* ( self.press - self.beads.nbeads*self.pext ) +
+                Constants.kb*self.temp )
+
+      fc = np.sum(depstrip(self.forces.f),0)/self.beads.nbeads
+      m = depstrip(self.beads.m3)[0]
+      pc = depstrip(self.beads.pc)
+
+      # I am not 100% sure, but these higher-order terms come from integrating the pressure virial term,
+      # so they should need to be multiplied by nbeads to be consistent with the equations of motion in the PI context
+      # again, these are tiny tiny terms so whatever.
+      self.p += (dthalf2*np.dot(pc,fc/m) + dthalf3*np.dot(fc,fc/m)) * self.beads.nbeads
+
+      self.beads.p += depstrip(self.forces.f)*dthalf
+
+   def qcstep(self):
+      """Propagates the centroid position and momentum and the volume."""
+
+      v = self.p[0]/self.m[0]
+      expq, expp = (np.exp(v*self.dt), np.exp(-v*self.dt))
+
+      m = depstrip(self.beads.m3)[0]
+
+      self.nm.qnm[0,:] *= expq
+      self.nm.qnm[0,:] += ((expq-expp)/(2.0*v))* (depstrip(self.nm.pnm)[0,:]/m)
+      self.nm.pnm[0,:] *= expp
+
+      self.cell.h *= expq
+
+
+class BaroMHT(Barostat):
+   """Martyna-Hughes-Tuckerman barostat class.
+
+   Just extends the standard class adding finite-dt propagators for the barostat
+   velocities, positions, piston.
+
+   Depend objects:
+      p: The momentum associated with the volume degree of freedom.
+      m: The mass associated with the volume degree of freedom.
+   """
+
+   def __init__(self, dt=None, temp=None, pext=None, tau=None, ebaro=None, thermostat=None, p=None):
+      """Initializes MHT barostat.
+
+      Args:
+         dt: Optional float giving the time step for the algorithms. Defaults
+            to the simulation dt.
+         temp: Optional float giving the temperature for the thermostat.
+            Defaults to the simulation temp.
+         pext: Optional float giving the external pressure.
+         tau: Optional float giving the time scale associated with the barostat.
+         ebaro: Optional float giving the conserved quantity already stored
+            in the barostat initially. Used on restart.
+         thermostat: The thermostat connected to the barostat degree of freedom.
+         p: Optional initial volume conjugate momentum. Defaults to 0.
+      """
+
+      super(BaroMHT, self).__init__(dt, temp, pext, tau, ebaro, thermostat)
+
+      dset(self,"p", depend_array(name='p', value=np.atleast_1d(0.0)))
+
+      if not p is None:
+         self.p = np.asarray([p])
+      else:
+         self.p = 0.0
+
+   def bind(self, beads, nm, cell, forces, prng=None, fixdof=None):
+      """Binds beads, cell and forces to the barostat.
+
+      This takes a beads object, a cell object and a forcefield object and
+      makes them members of the barostat. It also then creates the objects that
+      will hold the data needed in the barostat algorithms and the dependency
+      network.
+
+      Args:
+         beads: The beads object from which the bead positions are taken.
+         nm: The normal modes propagator object
+         cell: The cell object from which the system box is taken.
+         forces: The forcefield object from which the force and virial are
+            taken.
+         prng: The parent PRNG to bind the thermostat to
+         fixdof: The number of blocked degrees of freedom.
+      """
+
+      super(BaroMHT, self).bind(beads, nm, cell, forces, prng, fixdof)
+
+      # obtain the thermostat mass from the given time constant
+      # note that the barostat temperature is nbeads times the physical T
+      dset(self,"m", depend_array(name='m', value=np.atleast_1d(0.0),
+         func=(lambda:np.asarray([self.tau**2*3*self.beads.natoms*Constants.kb*self.temp])),
+            dependencies=[ dget(self,"tau"), dget(self,"temp") ] ))
+
+      # binds the thermostat to the piston degrees of freedom
+      self.thermostat.bind(pm=[ self.p, self.m ], prng=prng)
+
+      dset(self,"kin",depend_value(name='kin',
+         func=(lambda:0.5*self.p[0]**2/self.m[0]),
+            dependencies=[dget(self,"p"), dget(self,"m")] ) )
+
+      # the barostat energy must be computed from bits & pieces (overwrite the default)
+      dset(self, "ebaro", depend_value(name='ebaro', func=self.get_ebaro,
+         dependencies=[ dget(self, "kin"), dget(self, "pot"),
+            dget(self.cell, "V"), dget(self, "temp"),
+               dget(self.thermostat,"ethermo")]))
+
+   def get_ebaro(self):
+      """Calculates the barostat conserved quantity."""
+
+      return self.thermostat.ethermo + self.kin + self.pot
+
+   def pstep(self):
+      """Propagates the momenta for half a time step."""
+
+      dthalf = self.dt*0.5
+      dthalf2 = dthalf**2
+      dthalf3 = dthalf**3/3.0
+
+      fc = np.sum(depstrip(self.forces.f),0)/float(self.beads.nbeads)
+      m = depstrip(self.beads.m3)[0]
+      pc = depstrip(self.beads.pc)
+
+      self.p += dthalf*3.0*( self.cell.V* ( self.press - self.beads.nbeads*self.pext ) +
+                float(self.beads.nbeads)/self.mdof*np.dot(pc,pc/m) )
+
+      self.beads.p += depstrip(self.forces.f)*dthalf
+
+   def qcstep(self):
+      """Propagates the centroid position and momentum and the volume."""
+
+      v = self.p[0]/self.m[0]
+      adof = (1 + 3.0/self.mdof)
+      expq, expp = (np.exp(v*self.dt), np.exp( -v*self.dt * adof  ) )
+
+      m = depstrip(self.beads.m3)[0]
+
+      self.nm.qnm[0,:] *= expq
+      self.nm.qnm[0,:] += ((expq-expp)/(v*(1+adof)) *
+                    (depstrip(self.nm.pnm)[0,:])/m)
+      self.nm.pnm[0,:] *= expp
+
+      self.cell.h *= expq
diff --git a/tools/i-pi/ipi/engine/beads.py b/tools/i-pi/ipi/engine/beads.py
new file mode 100644
index 0000000000000000000000000000000000000000..ba4ddf1509994933f6fe68d25ccabe9a41da2a0d
--- /dev/null
+++ b/tools/i-pi/ipi/engine/beads.py
@@ -0,0 +1,323 @@
+"""Contains the classes which deal with all the beads.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Used for holding information about the beads, including their positions, masses
+momenta and kinetic energy. Has different objects for the position and normal
+mode representations, and has a special centroid atoms object for when the
+centroid coordinate is required.
+
+Classes:
+   Beads: Class with methods dealing with all the beads.
+"""
+
+__all__ = ['Beads']
+
+import numpy as np
+from ipi.utils.depend import *
+from ipi.engine.atoms import Atoms
+from ipi.utils import units
+
+class Beads(dobject):
+   """Storage for the beads positions and velocities.
+
+   Everything is stored as (nbeads,3*natoms) sized contiguous arrays,
+   and a convenience-access to each replica of the system is provided through a
+   list of Atoms objects. Contains arrays of both the normal mode representation
+   and the position representation, and various sized arrays for the atom
+   labels and masses. Also contains the potential and force between
+   neighbouring replicas.
+
+   Attributes:
+      natoms: The number of atoms.
+      nbeads: The number of beads.
+      _blist: A list of Atoms objects for each replica of the system. Each
+         replica is assumed to have the same mass and atom label.
+      centroid: An atoms object giving the centroid coordinate of the beads.
+
+   Depend objects:
+      names: An array giving the atom names.
+      m: An array giving the atom masses.
+      m3: An array giving the mass associated with each degree of freedom.
+      sm3: An array giving the square root of m3.
+      q: An array giving all the bead positions.
+      p: An array giving all the bead momenta.
+      qc: An array giving the centroid positions. Depends on qnm.
+      pc: An array giving the centroid momenta. Depends on pnm.
+      vpath: The spring potential between the beads, divided by omegan**2.
+         Depends on q.
+      fpath: The spring force between the beads, divided by omegan**2.
+         Depends on q.
+      kins: A list of the kinetic energy of each replica.
+      kin: The total kinetic energy of the system. Note that this is not the
+         same as the estimate of the kinetic energy of the system, which is
+         contained in the properties module.
+      kstress: The total kinetic stress tensor for the system.
+      rg: An array giving the radius of gyration of each atom.
+   """
+
+   def __init__(self, natoms, nbeads):
+      """Initialises Beads.
+
+      Args:
+         natoms: Number of atoms.
+         nbeads: Number of beads.
+      """
+
+      self.resize(natoms, nbeads)
+
+   def resize(self, natoms, nbeads):
+      """Creates all the data arrays needed in the simulation.
+
+      Effectively initializes the whole Beads object, according to the
+      specified number of atoms and beads. Is also used, as the name suggests,
+      to resize the data to a new number of beads when this is necessary, for
+      example in initialization from a simulation with a different number of
+      beads.
+
+      Also creates, or recreates, the dependency network, as this requires
+      the data arrays to be created for it to work.
+
+      Args:
+         natoms: The number of atoms.
+         nbeads: The number of beads.
+      """
+
+      self.natoms = natoms
+      self.nbeads = nbeads
+
+      dset(self,"names",
+         depend_array(name="names",value=np.zeros(natoms, np.dtype('|S6'))) )
+
+      # atom masses, and mass-related arrays
+      dset(self,"m",depend_array(name="m",value=np.zeros(natoms, float)) )   # this is the prototype mass array (just one independent of bead n)
+      dset(self,"m3",
+         depend_array(name="m3",value=np.zeros((nbeads,3*natoms), float),    # this is m conveniently replicated to be (nb,3*nat)
+            func=self.mtom3, dependencies=[dget(self,"m")]))
+      dset(self,"sm3",
+         depend_array(name="sm3",value=np.zeros((nbeads,3*natoms), float),   # this is just the square root of m3
+            func=self.m3tosm3, dependencies=[dget(self,"m3")]))
+
+      # positions and momenta. bead representation, base storage used everywhere
+      dset(self,"q",
+         depend_array(name="q",value=np.zeros((nbeads,3*natoms), float)) )
+      dset(self,"p",
+         depend_array(name="p",value=np.zeros((nbeads,3*natoms), float)) )
+
+      # position and momentum of the centroid
+      dset(self,"qc",
+         depend_array(name="qc",value=np.zeros(3*natoms, float),
+            func=self.get_qc, dependencies=[dget(self,"q")] ) )
+      dset(self,"pc",
+         depend_array(name="pc",value=np.zeros(3*natoms, float),
+            func=self.get_pc, dependencies=[dget(self,"p")] ) )
+
+      # create proxies to access the centroid and the individual beads as Atoms objects
+      self.centroid = Atoms(natoms, _prebind=(self.qc, self.pc, self.m, self.names))
+      self._blist = [Atoms(natoms, _prebind=( self.q[i,:], self.p[i,:], self.m,  self.names )) for i in range(nbeads) ]
+
+      # path springs potential and force
+      dset(self,"vpath",
+         depend_value(name="vpath", func=self.get_vpath,
+            dependencies=[dget(self,"q")]))
+      dset(self,"fpath",
+         depend_array(name="fpath", value=np.zeros((nbeads,3*natoms), float),
+            func=self.get_fpath, dependencies=[dget(self,"q")]))
+
+      # kinetic energies of thhe beads, and total (classical) kinetic stress tensor
+      dset(self,"kins",
+         depend_array(name="kins",value=np.zeros(nbeads, float),
+            func=self.kin_gather,
+               dependencies=[dget(b,"kin") for b in self._blist]))
+      dset(self,"kin",
+         depend_value(name="kin", func=self.get_kin,
+            dependencies=[dget(self,"kins")]))
+      dset(self,"kstress",
+         depend_array(name="kstress",value=np.zeros((3,3), float),
+            func=self.get_kstress,
+               dependencies=[dget(b,"kstress") for b in self._blist]))
+
+   def copy(self):
+      """Creates a new beads object from the original.
+
+      Returns:
+         A Beads object with the same q, p, m and names arrays as the original.
+      """
+
+      newbd = Beads(self.natoms, self.nbeads)
+      newbd.q[:] = self.q
+      newbd.p[:] = self.p
+      newbd.m[:] = self.m
+      newbd.names[:] = self.names
+      return newbd
+
+
+   def m3tosm3(self):
+      """Takes the mass array and returns the square rooted mass array."""
+
+      return np.sqrt(depstrip(self.m3))
+
+   def mtom3(self):
+      """Takes the mass array for each bead and returns one with an element
+      for each degree of freedom.
+
+      Returns:
+         An array of size (nbeads,3*natoms), with each element corresponding
+         to the mass associated with the appropriate degree of freedom in q.
+      """
+
+      m3 = np.zeros((self.nbeads,3*self.natoms),float)
+      m3[:,0:3*self.natoms:3] = self.m
+      m3[:,1:3*self.natoms:3] = m3[:,0:3*self.natoms:3]
+      m3[:,2:3*self.natoms:3] = m3[:,0:3*self.natoms:3]
+      return m3
+
+   def get_qc(self):
+      """Gets the centroid coordinates."""
+
+      return np.dot(np.ones(self.nbeads,float),depstrip(self.q))/float(self.nbeads)
+
+   def get_pc(self):
+      """Gets the centroid momenta."""
+
+      return np.dot(np.ones(self.nbeads,float),depstrip(self.p))/float(self.nbeads)
+
+   def kin_gather(self):
+      """Gets the kinetic energy for all the replicas.
+
+      Returns:
+         A list of the kinetic energy for each system.
+      """
+
+      return np.array([b.kin for b in self._blist])
+
+   def get_kin(self):
+      """Gets the total kinetic energy of all the replicas.
+
+      Note that this does not correspond to the total kinetic energy estimate
+      for the system.
+
+      Returns:
+         The sum of the kinetic energy of each replica.
+      """
+
+      return self.kins.sum()
+
+   def get_kstress(self):
+      """Calculates the total kinetic stress tensor of all the replicas.
+
+      Note that this does not correspond to the quantum kinetic stress tensor
+      estimate for the system.
+
+      Returns:
+         The sum of the kinetic stress tensor of each replica.
+      """
+
+      ks = np.zeros((3,3),float)
+      for b in range(self.nbeads):
+         ks += self[b].kstress
+      return ks
+
+   def get_vpath(self):
+      """Calculates the spring potential between the replicas.
+
+      Note that this is actually the harmonic potential without being
+      multiplied by the factor omegan**2, which is only available in the
+      ensemble as the temperature is required to calculate it.
+      """
+
+      epath = 0.0
+      q = depstrip(self.q)
+      m = depstrip(self.m3)[0]
+      for b in range(self.nbeads):
+         if b > 0:
+            dq = q[b,:] - q[b-1,:]
+         else:
+            dq = q[b,:] - q[self.nbeads-1,:]
+         epath += np.dot(dq, m*dq)
+      return epath*0.5
+
+   def get_fpath(self):
+      """Calculates the spring force between the replicas.
+
+      Note that this is actually the harmonic force without being
+      multiplied by the factor omegan**2, which is only available in the
+      ensemble as the temperature is required to calculate it.
+      """
+
+      nbeads = self.nbeads
+      natoms = self.natoms
+      f = np.zeros((nbeads,3*natoms),float)
+
+      q = depstrip(self.q)
+      m = depstrip(self.m3)[0]
+      for b in range(nbeads):
+         if b > 0:
+            dq = q[b,:] - q[b-1,:]
+         else:
+            dq = q[b,:] - q[self.nbeads-1,:]
+         dq *= m
+         f[b] -= dq
+         if b > 0:
+            f[b-1] += dq
+         else:
+            f[nbeads-1] += dq
+      return f
+
+   # A set of functions to access individual beads as Atoms objects
+   def __len__(self):
+      """Length function.
+
+      This is called whenever the standard function len(beads) is used.
+
+      Returns:
+         The number of beads.
+      """
+
+      return self.nbeads
+
+   def __getitem__(self,index):
+      """Overwrites standard getting function.
+
+      This is called whenever the standard function beads[index] is used.
+      Returns an Atoms object with the appropriate position and momenta arrays.
+
+      Args:
+         index: The index of the replica of the system to be accessed.
+
+      Returns:
+         The replica of the system given by the index.
+      """
+
+      return self._blist[index]
+
+   def __setitem__(self,index,value):
+      """Overwrites standard setting function.
+
+      This is called whenever the standard function beads[index]=value is used.
+      Changes the position and momenta of the appropriate slice of the global
+      position and momentum arrays to those given by value.
+
+      Args:
+         index: The replica of the system to be changed.
+         value: The Atoms object that holds the new values.
+      """
+
+      self._blist[index].p[:] = value.p
+      self._blist[index].q[:] = value.q
+      self._blist[index].m[:] = value.m
+      self._blist[index].names[:] = value.names
diff --git a/tools/i-pi/ipi/engine/cell.py b/tools/i-pi/ipi/engine/cell.py
new file mode 100644
index 0000000000000000000000000000000000000000..e9bf8135025288f21a5427fbca79d801b942ef2d
--- /dev/null
+++ b/tools/i-pi/ipi/engine/cell.py
@@ -0,0 +1,140 @@
+"""Contains the classes which deal with the system box.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Used for implementing the minimum image convention.
+
+Classes:
+   Cell: Base cell class with the generic methods and attributes.
+"""
+
+__all__ = ['Cell']
+
+import numpy as np
+from ipi.utils.depend import *
+from ipi.utils.mathtools import *
+from ipi.utils import units
+
+
+class Cell(dobject):
+   """Base class to represent the simulation cell in a periodic system.
+
+   This class has the base attributes required for either flexible or
+   isotropic cell dynamics. Uses an upper triangular lattice vector matrix to
+   represent the cell.
+
+   Depend objects:
+      h: An array giving the lattice vector matrix.
+      ih: An array giving the inverse of the lattice vector matrix.
+      V: The volume of the cell.
+   """
+
+   def __init__(self, h=None):
+      """Initialises base cell class.
+
+      Args:
+         h: Optional array giving the initial lattice vector matrix. The
+            reference cell matrix is set equal to this. Must be an upper
+            triangular 3*3 matrix. Defaults to a 3*3 zeroes matrix.
+      """
+
+      if h is None:
+         #h = np.identity(3,float)
+         h = np.zeros((3,3), float)
+      dset(self,"h",depend_array(name = 'h', value = h) )
+
+      dset(self,"ih",
+         depend_array(name = "ih", value = np.zeros((3,3),float),
+            func=self.get_ih, dependencies=[dget(self,"h")]) )
+      dset(self,"V",
+         depend_value(name = 'V', func=self.get_volume,
+            dependencies=[dget(self,"h")]) )
+
+   def get_ih(self):
+      """Inverts the lattice vector matrix."""
+
+      return invert_ut3x3(self.h)
+
+   def get_volume(self):
+      """Calculates the volume of the system box."""
+
+      return det_ut3x3(self.h)
+
+   def apply_pbc(self, atom):
+      """Uses the minimum image convention to return a particle to the
+         unit cell.
+
+      Args:
+         atom: An Atom object.
+
+      Returns:
+         An array giving the position of the image that is inside the
+         system box.
+      """
+
+      s = np.dot(self.ih,atom.q)
+
+
+      for i in range(3):
+         s[i] = s[i] - round(s[i])
+
+      return np.dot(self.h,s)
+
+   def array_pbc(self, pos):
+      """Uses the minimum image convention to return a list of particles to the
+         unit cell.
+
+      Args:
+         atom: An Atom object.
+
+      Returns:
+         An array giving the position of the image that is inside the
+         system box.
+      """
+
+      s = depstrip(pos).copy()
+      s.shape = (len(pos)/3,3)
+
+      s = np.dot(depstrip(self.ih),s.T)
+      s = s - np.round(s)
+
+      s = np.dot(depstrip(self.h),s).T
+
+      pos[:] = s.reshape((len(s)*3))
+
+   def minimum_distance(self, atom1, atom2):
+      """Takes two atoms and tries to find the smallest vector between two
+      images.
+
+      This is only rigorously accurate in the case of a cubic cell,
+      but gives the correct results as long as the cut-off radius is defined
+      as smaller than the smallest width between parallel faces even for
+      triclinic cells.
+
+      Args:
+         atom1: An Atom object.
+         atom2: An Atom object.
+
+      Returns:
+         An array giving the minimum distance between the positions of atoms
+         atom1 and atom2 in the minimum image convention.
+      """
+
+      s = np.dot(self.ih,atom1.q-atom2.q)
+      for i in range(3):
+         s[i] -= round(s[i])
+      return np.dot(self.h, s)
diff --git a/tools/i-pi/ipi/engine/ensembles.py b/tools/i-pi/ipi/engine/ensembles.py
new file mode 100644
index 0000000000000000000000000000000000000000..9660ca983c7eeb861412232a211d3b23d21030c7
--- /dev/null
+++ b/tools/i-pi/ipi/engine/ensembles.py
@@ -0,0 +1,565 @@
+"""Contains the classes that deal with the different dynamics required in
+different types of ensembles.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Holds the algorithms required for normal mode propagators, and the objects to
+do the constant temperature and pressure algorithms. Also calculates the
+appropriate conserved energy quantity for the ensemble of choice.
+
+Classes:
+   Ensemble: Base ensemble class with generic methods and attributes.
+   NVEEnsemble: Deals with constant energy dynamics.
+   NVTEnsemble: Deals with constant temperature dynamics.
+   NPTEnsemble: Deals with constant pressure dynamics.
+   ReplayEnsemble: Takes a trajectory, and simply sets the atom positions to
+      match it, rather than doing dynamics. In this way new properties can
+      be calculated on an old simulation, without having to rerun it from
+      scratch.
+"""
+
+__all__ = ['Ensemble', 'NVEEnsemble', 'NVTEnsemble', 'NPTEnsemble', 'ReplayEnsemble']
+
+import numpy as np
+import time
+
+from ipi.utils.depend import *
+from ipi.utils import units
+from ipi.utils.softexit import softexit
+from ipi.utils.io.io_xyz import read_xyz
+from ipi.utils.io.io_pdb import read_pdb
+from ipi.utils.io.io_xml import xml_parse_file
+from ipi.utils.units import Constants, unit_to_internal
+from ipi.inputs.thermostats import InputThermo
+from ipi.inputs.barostats import InputBaro
+from ipi.engine.thermostats import *
+from ipi.engine.barostats import *
+
+
+class Ensemble(dobject):
+   """Base ensemble class.
+
+   Gives the standard methods and attributes needed in all the
+   ensemble classes.
+
+   Attributes:
+      beads: A beads object giving the atoms positions.
+      cell: A cell object giving the system box.
+      forces: A forces object giving the virial and the forces acting on
+         each bead.
+      prng: A random number generator object.
+      nm: An object which does the normal modes transformation.
+      fixcom: A boolean which decides whether the centre of mass
+         motion will be constrained or not.
+
+   Depend objects:
+      econs: The conserved energy quantity appropriate to the given
+         ensemble. Depends on the various energy terms which make it up,
+         which are different depending on the ensemble.
+      temp: The system temperature.
+      dt: The timestep for the algorithms.
+      ntemp: The simulation temperature. Will be nbeads times higher than
+         the system temperature as PIMD calculations are done at this
+         effective classical temperature.
+   """
+
+   def __init__(self, dt, temp, fixcom=False):
+      """Initialises Ensemble.
+
+      Args:
+         dt: The timestep of the simulation algorithms.
+         temp: The temperature.
+         fixcom: An optional boolean which decides whether the centre of mass
+            motion will be constrained or not. Defaults to False.
+      """
+
+      dset(self, "econs", depend_value(name='econs', func=self.get_econs))
+      dset(self, "temp",  depend_value(name='temp',  value=temp))
+      dset(self, "dt",    depend_value(name='dt',    value=dt))
+      self.fixcom = fixcom
+
+
+   def bind(self, beads, nm, cell, bforce, prng):
+      """Binds beads, cell, bforce and prng to the ensemble.
+
+      This takes a beads object, a cell object, a forcefield object and a
+      random number generator object and makes them members of the ensemble.
+      It also then creates the objects that will hold the data needed in the
+      ensemble algorithms and the dependency network. Note that the conserved
+      quantity is defined in the init, but as each ensemble has a different
+      conserved quantity the dependencies are defined in bind.
+
+      Args:
+         beads: The beads object from whcih the bead positions are taken.
+         nm: A normal modes object used to do the normal modes transformation.
+         cell: The cell object from which the system box is taken.
+         bforce: The forcefield object from which the force and virial are
+            taken.
+         prng: The random number generator object which controls random number
+            generation.
+      """
+
+      # store local references to the different bits of the simulation
+      self.beads = beads
+      self.cell = cell
+      self.forces = bforce
+      self.prng = prng
+      self.nm = nm
+
+      # n times the temperature
+      dset(self,"ntemp", depend_value(name='ntemp',func=self.get_ntemp,
+         dependencies=[dget(self,"temp")]))
+
+      # dependencies of the conserved quantity
+      dget(self,"econs").add_dependency(dget(self.beads, "kin"))
+      dget(self,"econs").add_dependency(dget(self.forces, "pot"))
+      dget(self,"econs").add_dependency(dget(self.beads, "vpath"))
+
+
+   def get_ntemp(self):
+      """Returns the PI simulation temperature (P times the physical T)."""
+
+      return self.temp*self.beads.nbeads
+
+
+   def pstep(self):
+      """Dummy momenta propagator which does nothing."""
+
+      pass
+
+   def qcstep(self):
+      """Dummy centroid position propagator which does nothing."""
+
+      pass
+
+   def step(self):
+      """Dummy simulation time step which does nothing."""
+
+      pass
+
+   def get_econs(self):
+      """Calculates the conserved energy quantity for constant energy
+      ensembles.
+      """
+
+      return self.beads.vpath*self.nm.omegan2 + self.nm.kin + self.forces.pot
+
+
+class NVEEnsemble(Ensemble):
+   """Ensemble object for constant energy simulations.
+
+   Has the relevant conserved quantity and normal mode propagator for the
+   constant energy ensemble. Note that a temperature of some kind must be
+   defined so that the spring potential can be calculated.
+
+   Attributes:
+      ptime: The time taken in updating the velocities.
+      qtime: The time taken in updating the positions.
+      ttime: The time taken in applying the thermostat steps.
+
+   Depend objects:
+      econs: Conserved energy quantity. Depends on the bead kinetic and
+         potential energy, and the spring potential energy.
+   """
+
+   def __init__(self, dt, temp, fixcom=False):
+      """Initialises NVEEnsemble.
+
+      Args:
+         dt: The simulation timestep.
+         temp: The system temperature.
+         fixcom: An optional boolean which decides whether the centre of mass
+            motion will be constrained or not. Defaults to False.
+      """
+
+      super(NVEEnsemble,self).__init__(dt=dt,temp=temp, fixcom=fixcom)
+
+   def rmcom(self):
+      """This removes the centre of mass contribution to the kinetic energy.
+
+      Calculates the centre of mass momenta, then removes the mass weighted
+      contribution from each atom. If the ensemble defines a thermostat, then
+      the contribution to the conserved quantity due to this subtraction is
+      added to the thermostat heat energy, as it is assumed that the centre of
+      mass motion is due to the thermostat.
+
+      If there is a choice of thermostats, the thermostat
+      connected to the centroid is chosen.
+      """
+
+      if (self.fixcom):
+         pcom = np.zeros(3,float);
+
+         na3 = self.beads.natoms*3
+         nb = self.beads.nbeads
+         p = depstrip(self.beads.p)
+         m = depstrip(self.beads.m3)[:,0:na3:3]
+         M = self.beads[0].M
+
+         for i in range(3):
+            pcom[i] = p[:,i:na3:3].sum()
+
+         if hasattr(self,"thermostat"):
+            if hasattr(self.thermostat, "_thermos"):
+               self.thermostat._thermos[0].ethermo += np.dot(pcom,pcom)/(2.0*M*nb)
+            else:
+               self.thermostat.ethermo += np.dot(pcom,pcom)/(2.0*M*nb)
+
+         # subtracts COM _velocity_
+         pcom *= 1.0/(nb*M)
+         for i in range(3):
+            self.beads.p[:,i:na3:3] -= m*pcom[i]
+
+   def pstep(self):
+      """Velocity Verlet momenta propagator."""
+
+      self.beads.p += depstrip(self.forces.f)*(self.dt*0.5)
+
+   def qcstep(self):
+      """Velocity Verlet centroid position propagator."""
+
+      self.nm.qnm[0,:] += depstrip(self.nm.pnm)[0,:]/depstrip(self.beads.m3)[0]*self.dt
+
+   def step(self):
+      """Does one simulation time step."""
+
+      self.ptime = -time.time()
+      self.pstep()
+      self.ptime += time.time()
+
+      self.qtime = -time.time()
+      self.qcstep()
+
+      self.nm.free_qstep()
+      self.qtime += time.time()
+
+      self.ptime -= time.time()
+      self.pstep()
+      self.ptime += time.time()
+
+      self.ttime = -time.time()
+      self.rmcom()
+      self.ttime += time.time()
+
+
+class NVTEnsemble(NVEEnsemble):
+   """Ensemble object for constant temperature simulations.
+
+   Has the relevant conserved quantity and normal mode propagator for the
+   constant temperature ensemble. Contains a thermostat object containing the
+   algorithms to keep the temperature constant.
+
+   Attributes:
+      thermostat: A thermostat object to keep the temperature constant.
+
+   Depend objects:
+      econs: Conserved energy quantity. Depends on the bead kinetic and
+         potential energy, the spring potential energy and the heat
+         transferred to the thermostat.
+   """
+
+   def __init__(self, dt, temp, thermostat=None, fixcom=False):
+      """Initialises NVTEnsemble.
+
+      Args:
+         dt: The simulation timestep.
+         temp: The system temperature.
+         thermostat: A thermostat object to keep the temperature constant.
+            Defaults to Thermostat()
+         fixcom: An optional boolean which decides whether the centre of mass
+            motion will be constrained or not. Defaults to False.
+      """
+
+      super(NVTEnsemble,self).__init__(dt=dt,temp=temp, fixcom=fixcom)
+
+      if thermostat is None:
+         self.thermostat = Thermostat()
+      else:
+         self.thermostat = thermostat
+
+   def bind(self, beads, nm, cell, bforce, prng):
+      """Binds beads, cell, bforce and prng to the ensemble.
+
+      This takes a beads object, a cell object, a forcefield object and a
+      random number generator object and makes them members of the ensemble.
+      It also then creates the objects that will hold the data needed in the
+      ensemble algorithms and the dependency network. Also note that the
+      thermostat timestep and temperature are defined relative to the system
+      temperature, and the the thermostat temperature is held at the
+      higher simulation temperature, as is appropriate.
+
+      Args:
+         beads: The beads object from whcih the bead positions are taken.
+         nm: A normal modes object used to do the normal modes transformation.
+         cell: The cell object from which the system box is taken.
+         bforce: The forcefield object from which the force and virial are
+            taken.
+         prng: The random number generator object which controls random number
+            generation.
+      """
+
+      super(NVTEnsemble,self).bind(beads, nm, cell, bforce, prng)
+      fixdof = None
+      if self.fixcom:
+         fixdof = 3
+
+      # first makes sure that the thermostat has the correct temperature, then proceed with binding it.
+      deppipe(self,"ntemp", self.thermostat,"temp")
+      deppipe(self,"dt", self.thermostat, "dt")
+
+      #decides whether the thermostat will work in the normal mode or
+      #the bead representation.
+      if isinstance(self.thermostat,ThermoNMGLE) or isinstance(self.thermostat,ThermoNMGLEG) or isinstance(self.thermostat,ThermoPILE_L) or isinstance(self.thermostat,ThermoPILE_G):
+         self.thermostat.bind(nm=self.nm,prng=prng,fixdof=fixdof )
+      else:
+         self.thermostat.bind(beads=self.beads,prng=prng, fixdof=fixdof)
+
+      dget(self,"econs").add_dependency(dget(self.thermostat, "ethermo"))
+
+   def step(self):
+      """Does one simulation time step."""
+
+      self.ttime = -time.time()
+      self.thermostat.step()
+      self.rmcom()
+      self.ttime += time.time()
+
+      self.ptime = -time.time()
+      self.pstep()
+      self.ptime += time.time()
+
+      self.qtime = -time.time()
+      self.qcstep()
+      self.nm.free_qstep()
+      self.qtime += time.time()
+
+      self.ptime -= time.time()
+      self.pstep()
+      self.ptime += time.time()
+
+      self.ttime -= time.time()
+      self.thermostat.step()
+      self.rmcom()
+      self.ttime += time.time()
+
+   def get_econs(self):
+      """Calculates the conserved energy quantity for constant temperature
+      ensemble.
+      """
+
+      return NVEEnsemble.get_econs(self) + self.thermostat.ethermo
+
+
+class NPTEnsemble(NVTEnsemble):
+   """Ensemble object for constant pressure simulations.
+
+   Has the relevant conserved quantity and normal mode propagator for the
+   constant pressure ensemble. Contains a thermostat object containing the
+   algorithms to keep the temperature constant, and a barostat to keep the
+   pressure constant.
+
+   Attributes:
+      barostat: A barostat object to keep the pressure constant.
+
+   Depend objects:
+      econs: Conserved energy quantity. Depends on the bead and cell kinetic
+         and potential energy, the spring potential energy, the heat
+         transferred to the beads and cell thermostat, the temperature and
+         the cell volume.
+      pext: External pressure.
+   """
+
+   def __init__(self, dt, temp, pext, thermostat=None, barostat=None, fixcom=False):
+      """Initialises NPTEnsemble.
+
+      Args:
+         dt: The simulation timestep.
+         temp: The system temperature.
+         pext: The external pressure.
+         thermostat: A thermostat object to keep the temperature constant.
+            Defaults to Thermostat().
+         barostat: A barostat object to keep the pressure constant.
+            Defaults to Barostat().
+         fixcom: An optional boolean which decides whether the centre of mass
+            motion will be constrained or not. Defaults to False.
+      """
+
+      super(NPTEnsemble,self).__init__(dt, temp, thermostat, fixcom=fixcom)
+      if barostat == None:
+         self.barostat = Barostat()
+      else:
+         self.barostat = barostat
+
+      dset(self,"pext",depend_value(name='pext'))
+      if not pext is None:
+         self.pext = pext
+      else: self.pext = 0.0
+
+
+   def bind(self, beads, nm, cell, bforce, prng):
+      """Binds beads, cell, bforce and prng to the ensemble.
+
+      This takes a beads object, a cell object, a forcefield object and a
+      random number generator object and makes them members of the ensemble.
+      It also then creates the objects that will hold the data needed in the
+      ensemble algorithms and the dependency network. Also note that the cell
+      thermostat timesteps and temperatures are defined relative to the system
+      temperature, and the the thermostat temperatures are held at the
+      higher simulation temperature, as is appropriate.
+
+      Args:
+         beads: The beads object from whcih the bead positions are taken.
+         nm: A normal modes object used to do the normal modes transformation.
+         cell: The cell object from which the system box is taken.
+         bforce: The forcefield object from which the force and virial are
+            taken.
+         prng: The random number generator object which controls random number
+            generation.
+      """
+
+
+      fixdof = None
+      if self.fixcom:
+         fixdof = 3
+
+      super(NPTEnsemble,self).bind(beads, nm, cell, bforce, prng)
+      self.barostat.bind(beads, nm, cell, bforce, prng=prng, fixdof=fixdof)
+
+
+      deppipe(self,"ntemp", self.barostat, "temp")
+      deppipe(self,"dt", self.barostat, "dt")
+      deppipe(self,"pext", self.barostat, "pext")
+      dget(self,"econs").add_dependency(dget(self.barostat, "ebaro"))
+
+   def get_econs(self):
+      """Calculates the conserved energy quantity for the constant pressure
+      ensemble.
+      """
+
+      return NVTEnsemble.get_econs(self) + self.barostat.ebaro
+
+   def step(self):
+      """NPT time step.
+
+      Note that the barostat only propagates the centroid coordinates. If this
+      approximation is made a centroid virial pressure and stress estimator can
+      be defined, so this gives the best statistical convergence. This is
+      allowed as the normal mode propagation is approximately unaffected
+      by volume fluctuations as long as the system box is much larger than
+      the radius of gyration of the ring polymers.
+      """
+
+      self.ttime = -time.time()
+      self.thermostat.step()
+      self.barostat.thermostat.step()
+      self.rmcom()
+      self.ttime += time.time()
+
+      self.ptime = -time.time()
+      self.barostat.pstep()
+      self.ptime += time.time()
+
+      self.qtime = -time.time()
+      self.barostat.qcstep()
+      self.nm.free_qstep()
+      self.qtime += time.time()
+
+      self.ptime -= time.time()
+      self.barostat.pstep()
+      self.ptime += time.time()
+
+      self.ttime -= time.time()
+      self.barostat.thermostat.step()
+      self.thermostat.step()
+      self.rmcom()
+      self.ttime += time.time()
+
+
+class ReplayEnsemble(Ensemble):
+   """Ensemble object that just loads snapshots from an external file in sequence.
+
+   Has the relevant conserved quantity and normal mode propagator for the
+   constant energy ensemble. Note that a temperature of some kind must be
+   defined so that the spring potential can be calculated.
+
+   Attributes:
+      intraj: The input trajectory file.
+      ptime: The time taken in updating the velocities.
+      qtime: The time taken in updating the positions.
+      ttime: The time taken in applying the thermostat steps.
+
+   Depend objects:
+      econs: Conserved energy quantity. Depends on the bead kinetic and
+         potential energy, and the spring potential energy.
+   """
+
+   def __init__(self, dt, temp, fixcom=False, intraj=None):
+      """Initialises ReplayEnsemble.
+
+      Args:
+         dt: The simulation timestep.
+         temp: The system temperature.
+         fixcom: An optional boolean which decides whether the centre of mass
+            motion will be constrained or not. Defaults to False.
+         intraj: The input trajectory file.
+      """
+
+      super(ReplayEnsemble,self).__init__(dt=dt,temp=temp,fixcom=fixcom)
+      if intraj == None:
+         raise ValueError("Must provide an initialized InitFile object to read trajectory from")
+      self.intraj = intraj
+      if intraj.mode == "manual":
+         raise ValueError("Replay can only read from PDB or XYZ files -- or a single frame from a CHK file")
+      self.rfile = open(self.intraj.value,"r")
+
+   def step(self):
+      """Does one simulation time step."""
+
+      self.ptime = self.ttime = 0
+      self.qtime = -time.time()
+
+      try:
+         if (self.intraj.mode == "xyz"):
+            for b in self.beads:
+               myatoms = read_xyz(self.rfile)
+               myatoms.q *= unit_to_internal("length",self.intraj.units,1.0)
+               b.q[:] = myatoms.q
+         elif (self.intraj.mode == "pdb"):
+            for b in self.beads:
+               myatoms, mycell = read_pdb(self.rfile)
+               myatoms.q *= unit_to_internal("length",self.intraj.units,1.0)
+               mycell.h  *= unit_to_internal("length",self.intraj.units,1.0)
+               b.q[:] = myatoms.q
+            self.cell.h[:] = mycell.h
+         elif (self.intraj.mode == "chk" or self.intraj.mode == "checkpoint"):
+            # reads configuration from a checkpoint file
+            xmlchk = xml_parse_file(self.rfile) # Parses the file.
+
+            from ipi.inputs.simulation import InputSimulation
+            simchk = InputSimulation()
+            simchk.parse(xmlchk.fields[0][1])
+            mycell = simchk.cell.fetch()
+            mybeads = simchk.beads.fetch()
+            self.cell.h[:] = mycell.h
+            self.beads.q[:] = mybeads.q
+            softexit.trigger(" # Read single checkpoint")
+      except EOFError:
+         softexit.trigger(" # Finished reading re-run trajectory")
+
+      self.qtime += time.time()
+
+
diff --git a/tools/i-pi/ipi/engine/forces.py b/tools/i-pi/ipi/engine/forces.py
new file mode 100644
index 0000000000000000000000000000000000000000..58987f1e4dcb8fd5ee1e4ed56d2f75f7f341bd6b
--- /dev/null
+++ b/tools/i-pi/ipi/engine/forces.py
@@ -0,0 +1,781 @@
+"""Contains the classes that connect the driver to the python code.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Communicates with the driver code, obtaining the force, virial and potential.
+Deals with creating the jobs that will be sent to the driver, and
+returning the results to the python code.
+
+Classes:
+   ForceField: Base forcefield class with the generic methods and attributes.
+   FFSocket: Deals with a single replica of the system
+   ForceBeads: Deals with the parallelization of the force calculation over
+      different beads.
+   Forces: Deals with the parallelizatoin of the force calculation over
+      different forcefields.
+"""
+
+__all__ = ['ForceField', 'ForceBeads', 'Forces', 'FFSocket']
+
+import numpy as np
+import time
+from ipi.utils.softexit import softexit
+from ipi.utils.messages import verbosity, warning
+from ipi.utils.depend import *
+from ipi.utils.nmtransform import nm_rescale
+from ipi.interfaces.sockets import InterfaceSocket
+from ipi.engine.beads import Beads
+
+class ForceField(dobject):
+   """Base forcefield class.
+
+   Gives the standard methods and quantities needed in all the forcefield
+   classes.
+
+   Attributes:
+      atoms: An Atoms object containing all the atom positions.
+      cell: A Cell object containing the system box.
+
+   Depend objects:
+      ufvx: A list of the form [pot, f, vir]. These quantities are calculated
+         all at one time by the driver, so are collected together. Each separate
+         object is then taken from the list. Depends on the atom positions and
+         the system box.
+      extra: A string containing some formatted output returned by the client. Depends on ufvx.
+      pot: A float giving the potential energy of the system. Depends on ufvx.
+      f: An array containing all the components of the force. Depends on ufvx.
+      fx: A slice of f containing only the x components of the forces.
+      fy: A slice of f containing only the y components of the forces.
+      fz: A slice of f containing only the z components of the forces.
+      vir: An array containing the components of the virial tensor in upper
+         triangular form, not divided by the volume. Depends on ufvx.
+   """
+
+   def __init__(self):
+      """Initialises ForceField."""
+
+      # ufvx is a list [ u, f, vir, extra ]  which stores the results of the force
+      #calculation
+      dset(self,"ufvx", depend_value(name="ufvx", func=self.get_all))
+
+   def copy(self):
+      """Creates a deep copy without the bound objects.
+
+      Used in ForceBeads to create a ForceField for each replica of the system.
+
+      Returns:
+         A ForceField object without atoms or cell attributes.
+      """
+
+      return type(self)(self.nbeads, self.weight)
+
+   def bind(self, atoms, cell):
+      """Binds atoms and cell to the forcefield.
+
+      This takes an atoms object and a cell object and makes them members of
+      the forcefield. It also then creates the objects that will hold the data
+      that the driver returns and the dependency network.
+
+      Args:
+         atoms: The Atoms object from which the atom positions are taken.
+         cell: The Cell object from which the system box is taken.
+      """
+
+      # stores a reference to the atoms and cell we are computing forces for
+      self.atoms = atoms
+      self.cell = cell
+
+      # ufv depends on the atomic positions and on the cell
+      dget(self,"ufvx").add_dependency(dget(self.atoms,"q"))
+      dget(self,"ufvx").add_dependency(dget(self.cell,"h"))
+
+      # potential and virial are to be extracted very simply from ufv
+      dset(self,"pot",
+         depend_value(name="pot", func=self.get_pot,
+            dependencies=[dget(self,"ufvx")]))
+
+      dset(self,"vir",
+         depend_array(name="vir", value=np.zeros((3,3),float),func=self.get_vir,
+            dependencies=[dget(self,"ufvx")]))
+
+      # NB: the force requires a bit more work, to define shortcuts to xyz
+      # slices without calculating the force at this point.
+      fbase = np.zeros(atoms.natoms*3, float)
+      dset(self,"f",
+         depend_array(name="f", value=fbase, func=self.get_f,
+             dependencies=[dget(self,"ufvx")]))
+
+      dset(self,"extra",
+         depend_value(name="extra", func=self.get_extra,
+            dependencies=[dget(self,"ufvx")]))
+
+      dset(self,"fx", depend_array(name="fx", value=fbase[0:3*atoms.natoms:3]))
+      dset(self,"fy", depend_array(name="fy", value=fbase[1:3*atoms.natoms:3]))
+      dset(self,"fz", depend_array(name="fz", value=fbase[2:3*atoms.natoms:3]))
+      depcopy(self,"f", self,"fx")
+      depcopy(self,"f", self,"fy")
+      depcopy(self,"f", self,"fz")
+
+   def queue(self):
+      """Dummy queueing method."""
+
+      pass
+
+   def stop(self):
+      """Dummy queueing method."""
+
+      pass
+
+   def run(self):
+      """Dummy queueing method."""
+
+      pass
+
+   def get_all(self):
+      """Dummy driver routine.
+
+      Returns:
+         A list of the form [potential, force, virial] where the potential
+         and all components of the force and virial have been set to zero.
+      """
+
+      return [0.0, np.zeros(3*self.atoms.natoms), np.zeros((3,3),float), ""]
+
+   def get_pot(self):
+      """Calls get_all routine of forcefield to update potential.
+
+      Returns:
+         Potential energy.
+      """
+
+      return self.ufvx[0]
+
+   def get_f(self):
+      """Calls get_all routine of forcefield to update force.
+
+      Returns:
+         An array containing all the components of the force.
+      """
+
+      return depstrip(self.ufvx[1])
+
+   def get_vir(self):
+      """Calls get_all routine of forcefield to update virial.
+
+      Returns:
+         An array containing the virial in upper triangular form, not divided
+         by the volume.
+      """
+
+      vir = depstrip(self.ufvx[2])
+      vir[1,0] = 0.0
+      vir[2,0:2] = 0.0
+      return vir
+
+   def get_extra(self):
+      """Calls get_all routine of forcefield to update potential.
+
+      Returns:
+         A string containing all formatted additional output that the
+         client might have produced.
+      """
+
+      return self.ufvx[3]
+
+
+class FFSocket(ForceField):
+   """Interface between the PIMD code and the socket for a single replica.
+
+   Deals with an individual replica of the system, obtaining the potential
+   force and virial appropriate to this system. Deals with the distribution of
+   jobs to the interface.
+
+   Attributes:
+      parameters: A dictionary of the parameters used by the driver. Of the
+         form {'name': value}.
+      socket: The interface object which contains the socket through which
+         communication between the forcefield and the driver is done.
+      request: During the force calculation step this holds a dictionary
+         containing the relevant data for determining the progress of the step.
+         Of the form {'atoms': atoms, 'cell': cell, 'pars': parameters,
+                      'status': status, 'result': result, 'id': bead id,
+                      'start': starting time}.
+   """
+
+   def __init__(self, pars=None, interface=None):
+      """Initialises FFSocket.
+
+      Args:
+         pars: Optional dictionary, giving the parameters needed by the driver.
+         interface: Optional Interface object, which contains the socket.
+      """
+
+      # a socket to the communication library is created or linked
+      super(FFSocket,self).__init__()
+      if interface is None:
+         self.socket = InterfaceSocket()
+      else:
+         self.socket = interface
+
+      if pars is None:
+         self.pars = {}
+      else:
+         self.pars = pars
+      self.request = None
+
+   def bind(self, atoms, cell):
+      """Pass on the binding request from ForceBeads.
+
+      Also makes sure to set the socket's softexit.
+
+      Args:
+         atoms: Atoms object from which the bead positions are taken.
+         cell: Cell object from which the system box is taken.
+      """
+
+      super(FFSocket,self).bind(atoms, cell)
+
+   def copy(self):
+      """Creates a deep copy without the bound objects.
+
+      Used in ForceBeads to create a FFSocket for each replica of the system.
+
+      Returns:
+         A FFSocket object without atoms or cell attributes.
+      """
+
+      # does not copy the bound objects
+      # (i.e., the returned forcefield must be bound before use)
+      return type(self)(self.pars, self.socket)
+
+   def get_all(self):
+      """Driver routine.
+
+      When one of the force, potential or virial are called, this sends the
+      atoms and cell to the driver through the interface, requesting that the
+      driver does the calculation. This then waits until the driver is finished,
+      and then returns the ufvx list.
+
+      Returns:
+         A list of the form [potential, force, virial, extra].
+      """
+
+      # this is converting the distribution library requests into [ u, f, v ]  lists
+      if self.request is None:
+         self.request = self.socket.queue(self.atoms, self.cell, pars=self.pars, reqid=-1)
+      while self.request["status"] != "Done":
+         if self.request["status"] == "Exit":
+            break
+         time.sleep(self.socket.latency)
+      if self.request["status"] == "Exit":
+         softexit.trigger(" @Force: Requested returned a Exit status")
+
+      # data has been collected, so the request can be released and a slot
+      #freed up for new calculations
+      self.socket.release(self.request)
+      result = self.request["result"]
+      self.request = None
+
+      return result
+
+   def queue(self, reqid=-1):
+      """Sends the job to the interface queue directly.
+
+      Allows the ForceBeads object to ask for the ufvx list of each replica
+      directly without going through the get_all function. This allows
+      all the jobs to be sent at once, allowing them to be parallelized.
+
+      Args:
+         reqid: An optional integer that indentifies requests of the same type,
+            e.g. the bead index.
+      """
+
+      if self.request is None and dget(self,"ufvx").tainted():
+         self.request = self.socket.queue(self.atoms, self.cell, pars=self.pars, reqid=reqid)
+
+   def run(self):
+      """Makes the socket start looking for driver codes.
+
+      Tells the interface code to start the thread that looks for
+      connection from the driver codes in a loop. Until this point no
+      jobs can be queued.
+      """
+
+      if not self.socket.started():
+         self.socket.start_thread()
+
+   def stop(self):
+      """Makes the socket stop looking for driver codes.
+
+      Tells the interface code to stop the thread that looks for
+      connection from the driver codes in a loop. After this point no
+      jobs can be queued.
+      """
+
+      if self.socket.started():
+         self.socket.end_thread()
+
+
+class ForceBeads(dobject):
+   """Class that gathers the forces for each replica together.
+
+   Deals with splitting the bead representation into
+   separate replicas, and collecting the data from each replica.
+
+   Attributes:
+      natoms: An integer giving the number of atoms.
+      nbeads: An integer giving the number of beads.
+      f_model: A model used to create the forcefield objects for each replica
+         of the system.
+      _forces: A list of the forcefield objects for all the replicas.
+      weight: A float that will be used to weight the contribution of this
+         forcefield to the total force.
+
+   Depend objects:
+      f: An array containing the components of the force. Depends on each
+         replica's ufvx list.
+      pots: A list containing the potential energy for each system replica.
+         Depends on each replica's ufvx list.
+      virs: A list containing the virial tensor for each system replica.
+         Depends on each replica's ufvx list.
+      pot: The sum of the potential energy of the replicas.
+      vir: The sum of the virial tensor of the replicas.
+      extras: Strings containing some formatted output returned by the client.
+         Depends on each replica's ufvx list.
+   """
+
+   def __init__(self, model, nbeads=0, weight=1.0):
+      """Initializes ForceBeads
+
+      Args:
+         model: A model to be used to create the forcefield objects for all
+            the replicas of the system.
+         nbeads: The number of replicas.
+         weight: A relative weight to be given to the values obtained with this
+            forcefield. When the contribution of all the forcefields is
+            combined to give a total force, the contribution of this forcefield
+            will be weighted by this factor.
+      """
+
+      self.f_model = model
+      self.nbeads = nbeads
+      self.weight = weight
+
+   def copy(self):
+      """Creates a deep copy without the bound objects.
+
+      Used so that we can create multiple Forces objects from the same
+      Forcebeads model, without binding a particular ForceBeads object twice.
+
+      Returns:
+         A ForceBeads object without beads or cell attributes.
+      """
+
+      # does not copy the bound objects (i.e., the returned forcefield must be bound before use)
+      return type(self)(self.f_model, self.nbeads, self.weight)
+
+
+   def bind(self, beads, cell):
+      """Binds beads, cell and force to the forcefield.
+
+      Takes the beads, cell objects and makes them members of the forcefield.
+      Also takes the force object and copies it once for each replica of the
+      system, then binds each replica to one of the copies so that the force
+      calculation can be parallelized. Creates the objects that will
+      hold the data that the driver returns and the dependency network.
+
+      Args:
+         beads: Beads object from which the bead positions are taken.
+         cell: Cell object from which the system box is taken.
+      """
+
+      # stores a copy of the number of atoms and of beads
+      #!TODO! make them read-only properties
+      self.natoms = beads.natoms
+      if (self.nbeads != beads.nbeads):
+         raise ValueError("Binding together a Beads and a ForceBeads objects with different numbers of beads")
+
+      # creates an array of force objects, which are bound to the beads
+      #and the cell
+      self._forces = [];
+      for b in range(self.nbeads):
+         new_force = self.f_model.copy()
+         new_force.bind(beads[b], cell)
+         self._forces.append(new_force)
+
+      # f is a big array which assembles the forces on individual beads
+      dset(self,"f",
+         depend_array(name="f",value=np.zeros((self.nbeads,3*self.natoms)),
+            func=self.f_gather,
+               dependencies=[dget(self._forces[b],"f") for b in range(self.nbeads)]))
+
+      # collection of pots and virs from individual beads
+      dset(self,"pots",
+         depend_array(name="pots", value=np.zeros(self.nbeads,float),
+            func=self.pot_gather,
+               dependencies=[dget(self._forces[b],"pot") for b in range(self.nbeads)]))
+      dset(self,"virs",
+         depend_array(name="virs", value=np.zeros((self.nbeads,3,3),float),
+            func=self.vir_gather,
+               dependencies=[dget(self._forces[b],"vir") for b in range(self.nbeads)]))
+      dset(self,"extras",
+         depend_value(name="extras", value=np.zeros(self.nbeads,float),
+            func=self.extra_gather,
+               dependencies=[dget(self._forces[b],"extra") for b in range(self.nbeads)]))
+
+      # total potential and total virial
+      dset(self,"pot",
+         depend_value(name="pot", func=(lambda: self.pots.sum()),
+            dependencies=[dget(self,"pots")]))
+      dset(self,"vir",
+         depend_array(name="vir", func=self.get_vir, value=np.zeros((3,3)),
+            dependencies=[dget(self,"virs")]))
+
+   def run(self):
+      """Makes the socket start looking for driver codes.
+
+      Tells the interface code to start the thread that looks for
+      connection from the driver codes in a loop. Until this point no
+      jobs can be queued.
+      """
+
+      for b in range(self.nbeads):
+         self._forces[b].run()
+
+   def stop(self):
+      """Makes the socket stop looking for driver codes.
+
+      Tells the interface code to stop the thread that looks for
+      connection from the driver codes in a loop. After this point no
+      jobs can be queued.
+      """
+
+      for b in range(self.nbeads):
+         self._forces[b].stop()
+
+   def queue(self):
+      """Submits all the required force calculations to the interface."""
+
+      # this should be called in functions which access u,v,f for ALL the beads,
+      # before accessing them. it is basically pre-queueing so that the
+      # distributed-computing magic can work
+      for b in range(self.nbeads):
+         self._forces[b].queue(reqid=b)
+
+   def pot_gather(self):
+      """Obtains the potential energy for each replica.
+
+      Returns:
+         A list of the potential energy of each replica of the system.
+      """
+
+      self.queue()
+      return np.array([b.pot for b in self._forces], float)
+
+   def extra_gather(self):
+      """Obtains the potential energy for each replica.
+
+      Returns:
+         A list of the potential energy of each replica of the system.
+      """
+
+      self.queue()
+      return [b.extra for b in self._forces]
+
+   def vir_gather(self):
+      """Obtains the virial for each replica.
+
+      Returns:
+         A list of the virial of each replica of the system.
+      """
+
+      self.queue()
+      return np.array([b.vir for b in self._forces], float)
+
+   def f_gather(self):
+      """Obtains the force vector for each replica.
+
+      Returns:
+         An array with all the components of the force. Row i gives the force
+         array for replica i of the system.
+      """
+
+      newf = np.zeros((self.nbeads,3*self.natoms),float)
+
+      self.queue()
+      for b in range(self.nbeads):
+         newf[b] = depstrip(self._forces[b].f)
+
+      return newf
+
+      #serial
+#      for b in range(self.nbeads): newf[b]=self._forces[b].f
+      # threaded
+#      bthreads=[]
+#      print "starting threads"
+#      for b in range(self.nbeads):
+#         thread=threading.Thread(target=self._getbead, args=(b,newf,))
+#         thread.start()
+#         bthreads.append(thread)
+
+#      print "waiting threads"
+#      for b in range(self.nbeads): bthreads[b].join()
+#      print "threads joined in"
+
+   def get_vir(self):
+      """Sums the virial of each replica.
+
+      Not the actual system virial, as it has not been divided by either the
+      number of beads or the cell volume.
+
+      Returns:
+          Virial sum.
+      """
+
+      vir = np.zeros((3,3))
+      for v in depstrip(self.virs):
+         vir += v
+      return vir
+
+   def __len__(self):
+      """Length function.
+
+      This is called whenever the standard function len(forcebeads) is used.
+
+      Returns:
+         The number of beads.
+      """
+
+      return self.nbeads
+
+   def __getitem__(self,index):
+      """Overwrites standard getting function.
+
+      This is called whenever the standard function forcebeads[index] is used.
+      Returns the force on bead index.
+
+      Args:
+         index: The index of the replica of the system to be accessed.
+
+      Returns:
+         The forces acting on the replica of the system given by the index.
+      """
+
+      return self._forces[index]
+
+
+class Forces(dobject):
+   """Class that gathers all the forces together.
+
+   Collects many forcefield instances and parallelizes getting the forces
+   in a PIMD environment.
+
+   Attributes:
+      natoms: An integer giving the number of atoms.
+      nbeads: An integer giving the number of beads.
+      nforces: An integer giving the number of ForceBeads objects.
+      mforces: A list of all the forcefield objects.
+      mbeads: A list of all the beads objects. Some of these may be contracted
+         ring polymers, with a smaller number of beads than of the simulation.
+      mweights: A list of the weights of all the forcefields.
+      mrpc: A list of the objects containing the functions required to
+         contract the ring polymers of the different forcefields.
+
+   Depend objects:
+      f: An array containing the components of the force. Depends on each
+         replica's ufvx list.
+      pots: A list containing the potential energy for each system replica.
+         Depends on each replica's ufvx list.
+      virs: A list containing the virial tensor for each system replica.
+         Depends on each replica's ufvx list.
+      extras: A list containing the "extra" strings for each replica.
+      pot: The sum of the potential energy of the replicas.
+      vir: The sum of the virial tensor of the replicas.
+   """
+
+   def bind(self, beads, cell, flist):
+
+      self.natoms = beads.natoms
+      self.nbeads = beads.nbeads
+      self.nforces = len(flist)
+
+      # flist should be a list of tuples containing ( "name", forcebeads)
+      self.mforces = []
+      self.mbeads = []
+      self.mweights = []
+      self.mrpc = []
+
+      # a "function factory" to generate functions to automatically update
+      #contracted paths
+      def make_rpc(rpc, beads):
+         return lambda: rpc.b1tob2(depstrip(beads.q))
+
+      # creates new force objects, possibly acting on contracted path
+      #representations
+      for (ftype, fbeads) in flist:
+
+         # creates an automatically-updated contracted beads object
+         newb = fbeads.nbeads
+         newforce = fbeads.copy()
+         newweight = fbeads.weight
+
+         # if the number of beads for this force component is unspecified,
+         #assume full force evaluation
+         if newb == 0:
+            newb = beads.nbeads
+            newforce.nbeads = newb
+
+         newbeads = Beads(beads.natoms, newb)
+         newrpc = nm_rescale(beads.nbeads, newb)
+
+         dget(newbeads,"q")._func = make_rpc(newrpc, beads)
+         for b in newbeads:
+            # must update also indirect access to the beads coordinates
+            dget(b,"q")._func = dget(newbeads,"q")._func
+
+         # makes newbeads.q depend from beads.q
+         dget(beads,"q").add_dependant(dget(newbeads,"q"))
+
+         #now we create a new forcebeads which is bound to newbeads!
+         newforce.bind(newbeads, cell)
+
+         #adds information we will later need to the appropriate lists.
+         self.mweights.append(newweight)
+         self.mbeads.append(newbeads)
+         self.mforces.append(newforce)
+         self.mrpc.append(newrpc)
+
+      #now must expose an interface that gives overall forces
+      dset(self,"f",
+         depend_array(name="f",value=np.zeros((self.nbeads,3*self.natoms)),
+            func=self.f_combine,
+               dependencies=[dget(ff, "f") for ff in self.mforces] ) )
+
+      # collection of pots and virs from individual ff objects
+      dset(self,"pots",
+         depend_array(name="pots", value=np.zeros(self.nbeads,float),
+            func=self.pot_combine,
+               dependencies=[dget(ff, "pots") for ff in self.mforces]) )
+
+      # must take care of the virials!
+      dset(self,"virs",
+         depend_array(name="virs", value=np.zeros((self.nbeads,3,3),float),
+            func=self.vir_combine,
+               dependencies=[dget(ff, "virs") for ff in self.mforces]) )
+
+      dset(self,"extras",
+         depend_value(name="extras", value=np.zeros(self.nbeads,float),
+            func=self.extra_combine,
+               dependencies=[dget(ff, "extras") for ff in self.mforces]))
+
+      # total potential and total virial
+      dset(self,"pot",
+         depend_value(name="pot", func=(lambda: self.pots.sum()),
+            dependencies=[dget(self,"pots")]))
+      dset(self,"vir",
+         depend_array(name="vir", func=self.get_vir, value=np.zeros((3,3)),
+            dependencies=[dget(self,"virs")]))
+
+   def run(self):
+      """Makes the socket start looking for driver codes.
+
+      Tells the interface code to start the thread that looks for
+      connection from the driver codes in a loop. Until this point no
+      jobs can be queued.
+      """
+
+      for ff in self.mforces:
+         ff.run()
+
+   def stop(self):
+      """Makes the socket stop looking for driver codes.
+
+      Tells the interface code to stop the thread that looks for
+      connection from the driver codes in a loop. After this point no
+      jobs can be queued.
+      """
+
+      for ff in self.mforces:
+         ff.stop()
+
+   def queue(self):
+      """Submits all the required force calculations to the forcefields."""
+
+      for ff in self.mforces:
+         ff.queue()
+
+   def get_vir(self):
+      """Sums the virial of each forcefield.
+
+      Not the actual system virial.
+
+      Returns:
+          Virial sum.
+      """
+
+      vir = np.zeros((3,3))
+      for v in depstrip(self.virs):
+         vir += v
+      return vir
+
+   def f_combine(self):
+      """Obtains the total force vector."""
+
+      self.queue()
+      rf = np.zeros((self.nbeads,3*self.natoms),float)
+      for k in range(self.nforces):
+         # "expand" to the total number of beads the forces from the
+         #contracted one
+         rf += self.mweights[k]*self.mrpc[k].b2tob1(depstrip(self.mforces[k].f))
+      return rf
+
+   def pot_combine(self):
+      """Obtains the potential energy for each forcefield."""
+
+      self.queue()
+      rp = np.zeros(self.nbeads,float)
+      for k in range(self.nforces):
+         # "expand" to the total number of beads the potentials from the
+         #contracted one
+         rp += self.mweights[k]*self.mrpc[k].b2tob1(self.mforces[k].pots)
+      return rp
+
+   def extra_combine(self):
+      """Obtains the potential energy for each forcefield."""
+
+      self.queue()
+      rp = [ "" for b in range(self.nbeads) ]
+      for k in range(self.nforces):
+         # "expand" to the total number of beads the potentials from the
+         #contracted one
+         for b in range(self.nbeads):
+            rp[b] += self.mforces[k].extras[b]
+      return rp
+
+   def vir_combine(self):
+      """Obtains the virial tensor for each forcefield."""
+
+      self.queue()
+      rp = np.zeros((self.nbeads,3,3),float)
+      for k in range(self.nforces):
+         virs = depstrip(self.mforces[k].virs)
+         # "expand" to the total number of beads the virials from the
+         #contracted one, element by element
+         for i in range(3):
+            for j in range(3):
+               rp[:,i,j] += self.mweights[k]*self.mrpc[k].b2tob1(virs[:,i,j])
+      return rp
diff --git a/tools/i-pi/ipi/engine/initializer.py b/tools/i-pi/ipi/engine/initializer.py
new file mode 100644
index 0000000000000000000000000000000000000000..466677938a18de1030c123cfc234fa6f973020bb
--- /dev/null
+++ b/tools/i-pi/ipi/engine/initializer.py
@@ -0,0 +1,549 @@
+"""Contains the classes that are used to initialize data in the simulation.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+These classes can either be used to restart a simulation with some different
+data or used to start a calculation. Any data given in these classes will
+overwrite data given elsewhere.
+
+Classes:
+   Initializer: Holds the functions that are required to initialize objects in
+      the code. Data can be initialized from a file, or according to a
+      particular parameter. An example of the former would be initializing
+      the configurations from a xyz file, an example of the latter would be
+      initializing the velocities according to the physical temperature.
+   InitBase: Simple class that reads data from a string or file.
+   InitIndexed: The same as init base, but can also optionally hold
+      information about which atom or bead to initialize from.
+
+Functions:
+   init_xyz: Reads beads data from a xyz file.
+   init_pdb: Reads beads and cell data from a pdb file.
+   init_chk: Reads beads, cell and thermostat data from a checkpoint file.
+   init_beads: Initializes a beads object from an Initializer object.
+   init_vector: Initializes a vector from an Initializer object.
+   set_vector: Initializes a vector from another vector.
+"""
+
+import numpy as np
+
+from ipi.engine.beads import Beads
+from ipi.engine.cell import Cell
+from ipi.engine.normalmodes import NormalModes
+from ipi.engine.ensembles import Ensemble
+from ipi.utils.io.io_xyz import read_xyz
+from ipi.utils.io.io_pdb import read_pdb
+from ipi.utils.io.io_xml import xml_parse_file
+from ipi.utils.depend import dobject
+from ipi.utils.units import Constants, unit_to_internal
+from ipi.utils.nmtransform import nm_rescale
+from ipi.utils.messages import verbosity, warning, info
+
+__all__ = ['Initializer', 'InitBase', 'InitIndexed']
+
+class InitBase(dobject):
+   """Base class for initializer objects.
+
+   Attributes:
+      value: A duck-typed stored value.
+      mode: A string that determines how the value is to be interpreted.
+      units: A string giving which unit the value is in.
+   """
+
+   def __init__(self, value="", mode="", units="", **others):
+      """Initializes InitFile.
+
+      Args:
+         value: A string which specifies what value to initialize the
+            simulation property to.
+         mode: A string specifiying what style of initialization should be
+            used to read the data.
+         units: A string giving which unit the value is in.
+      """
+
+      self.value = value
+      self.mode = mode
+      self.units = units
+
+      for (o, v) in others.items():
+         self.__dict__[o] = v
+
+
+class InitIndexed(InitBase):
+   """Class to initialize objects which can be set for a particular bead.
+
+   Attributes:
+      index: Which atom to initialize the value of.
+      bead: Which bead to initialize the value of.
+   """
+
+   def __init__(self, value="", mode="", units="", index=-1, bead=-1):
+      """Initializes InitFile.
+
+      Args:
+         value: A string which specifies what value to initialize the
+            simulation property to.
+         mode: A string specifiying what style of initialization should be
+            used to read the data.
+         units: A string giving which unit the value is in.
+         index: Which atom to initialize the value of.
+         bead: Which bead to initialize the value of.
+      """
+
+      super(InitIndexed,self).__init__(value=value, mode=mode, units=units, index=index, bead=bead)
+
+
+def init_xyz(filename):
+   """Reads an xyz file and returns the data contained in it.
+
+   Args:
+      filename: A string giving the name of the xyz file to be read from.
+
+   Returns:
+      A list of Atoms objects as read from each frame of the xyz file.
+   """
+
+   rfile = open(filename,"r")
+   ratoms = []
+   while True:
+   #while loop, so that more than one configuration can be given
+   #so multiple beads can be initialized at once.
+      try:
+         myatoms = read_xyz(rfile)
+      except EOFError:
+         break
+      ratoms.append(myatoms)
+   return ratoms
+
+def init_pdb(filename):
+   """Reads an pdb file and returns the data contained in it.
+
+   Args:
+      filename: A string giving the name of the pdb file to be read from.
+
+   Returns:
+      A list of Atoms objects as read from each frame of the pdb file, and
+      a Cell object as read from the final pdb frame.
+   """
+
+   rfile = open(filename,"r")
+   ratoms = []
+   while True:
+   #while loop, so that more than one configuration can be given
+   #so multiple beads can be initialized at once.
+      try:
+         myatoms, rcell  = read_pdb(rfile)
+      except EOFError:
+         break
+      ratoms.append(myatoms)
+   return ( ratoms, rcell ) # if multiple frames, the last cell is returned
+
+def init_chk(filename):
+   """Reads an checkpoint file and returns the data contained in it.
+
+   Args:
+      filename: A string giving the name of the checkpoint file to be read from.
+
+   Returns:
+      A Beads object, Cell object and Thermostat object as read from the
+      checkpoint file.
+   """
+
+   # reads configuration from a checkpoint file
+   rfile = open(filename,"r")
+   xmlchk = xml_parse_file(rfile) # Parses the file.
+
+   from ipi.inputs.simulation import InputSimulation
+   simchk = InputSimulation()
+   simchk.parse(xmlchk.fields[0][1])
+   rcell = simchk.cell.fetch()
+   rbeads = simchk.beads.fetch()
+   rthermo = simchk.ensemble.thermostat.fetch()
+
+   return (rbeads, rcell, rthermo)
+
+def init_beads(iif, nbeads):
+   """A file to initialize a beads object from an appropriate initializer
+   object.
+
+   Args:
+      iif: An Initializer object which has information on the bead positions.
+      nbeads: The number of beads.
+
+   Raises:
+      ValueError: If called using an Initializer object with a 'manual' mode.
+   """
+
+   mode = iif.mode; value = iif.value
+   if mode == "xyz" or mode == "pdb":
+      if mode == "xyz": ratoms = init_xyz(value)
+      if mode == "pdb": ratoms = init_pdb(value)[0]
+      rbeads = Beads(ratoms[0].natoms,len(ratoms))
+      for i in range(len(ratoms)): rbeads[i] = ratoms[i]
+   elif mode == "chk":
+      rbeads = init_chk(value)[0]
+   elif mode == "manual":
+      raise ValueError("Cannot initialize manually a whole beads object.")
+
+   return rbeads
+
+def init_vector(iif, nbeads, momenta=False):
+   """A file to initialize a vector from an appropriate initializer
+   object.
+
+   Args:
+      iif: An Initializer object specifying the value of a vector.
+      nbeads: The number of beads.
+      momenta: If bead momenta rather than positions are being initialized
+         from a checkpoint file, this is set to True.
+   """
+
+   mode = iif.mode; value = iif.value
+   if mode == "xyz" or mode == "pdb":
+      rq = init_beads(iif, nbeads).q
+   elif mode == "chk":
+      if momenta: rq = init_beads(iif, nbeads).p
+      else:       rq = init_beads(iif, nbeads).q
+   elif mode == "manual":
+      rq = value
+
+   # determines the size of the input data
+   if mode == "manual":
+      if iif.bead >= 0: # if there is a bead specifier then we return a single bead slice
+         nbeads = 1
+      natoms = len(rq)/nbeads/3
+      rq.shape = (nbeads,3*natoms)
+
+   return rq
+
+def set_vector(iif, dq, rq):
+   """A file to initialize a vector from an another vector.
+
+   If the first dimension is different, i.e. the two vectors correspond
+   to a different number of beads, then the ring polymer contraction/expansion
+   is used to rescale the original vector to the one used in the simulation,
+   as described in the paper T. E. Markland and D. E. Manolopoulos, J. Chem.
+   Phys. 129, 024105, (2008).
+
+   Args:
+      iif: An Initializer object specifying the value of a vector.
+      dq: The vector to be initialized.
+      rq: The vector to initialize from.
+   """
+
+   (nbeads, natoms) = rq.shape; natoms /= 3
+   (dbeads, datoms) = dq.shape; datoms /= 3
+
+   # Check that indices make sense
+   if iif.index < 0 and natoms != datoms:
+      raise ValueError("Initialization tries to mix up structures with different atom numbers.")
+   if iif.index >= datoms:
+      raise ValueError("Cannot initialize single atom as atom index %d is larger than the number of atoms" % iif.index)
+   if iif.bead >= dbeads:
+      raise ValueError("Cannot initialize single bead as bead index %d is larger than the number of beads" % iif.bead)
+
+   if iif.bead < 0:   # we are initializing the path
+      res = nm_rescale(nbeads,dbeads)  # path rescaler
+      if nbeads != dbeads:
+         info(" # Initialize is rescaling from %5d beads to %5d beads" % (nbeads, dbeads), verbosity.low)
+      if iif.index < 0:
+         dq[:] = res.b1tob2(rq)
+      else: # we are initializing a specific atom
+         dq[:,3*iif.index:3*(iif.index+1)] = res.b1tob2(rq)
+   else:  # we are initializing a specific bead
+      if iif.index < 0:
+         dq[iif.bead] = rq
+      else:
+         dq[iif.bead,3*iif.index:3*(iif.index+1)] = rq
+
+class Initializer(dobject):
+   """Class that deals with the initialization of data.
+
+   This can either be used to initialize the atom positions and the cell data
+   from a file, or to initialize them from a beads, atoms or cell object.
+
+   Currently, we use a ring polymer contraction scheme to create a new beads
+   object from one given in initialize if they have different numbers of beads,
+   as described in the paper T. E. Markland and D. E. Manolopoulos, J. Chem.
+   Phys. 129, 024105, (2008). If the new beads object has more beads than
+   the beads object it was initialized from, we set the higher ring polymer
+   normal modes to zero.
+
+   Attributes:
+      queue: A list of things to initialize. Each member of the list is a tuple
+         of the form ('type', 'object'), where 'type' specifies what kind of
+         initialization is being done, and 'object' gives the data to
+         initialize it from.
+   """
+
+   def __init__(self, nbeads=0, queue=None):
+      """Initializes Initializer.
+
+      Arguments:
+         nbeads: The number of beads that we need in the simulation. Not
+            necessarily the same as the number of beads of the objects we are
+            initializing the data from.
+         queue: A list of things to initialize. Each member of the list is a
+            tuple of the form ('type', 'object'), where 'type' specifies what
+            kind of initialization is being done, and 'object' gives the data to
+            initialize it from.
+      """
+
+      self.nbeads = nbeads
+
+      if queue is None:
+         self.queue = []
+      else:
+         self.queue = queue
+
+   def init_stage1(self, simul):
+      """Initializes the simulation -- first stage.
+
+      Takes a simulation object, and uses all the data in the initialization
+      queue to fill up the beads and cell data needed to run the simulation.
+
+      Args:
+         simul: A simulation object to be initialized.
+
+      Raises:
+         ValueError: Raised if there is a problem with the initialization,
+            if something that should have been has not been, or if the objects
+            that have been specified are not compatible with each other.
+      """
+
+      if simul.beads.nbeads == 0:
+         fpos = fmom = fmass = flab = fcell = False   # we don't have an explicitly defined beads object yet
+      else:
+         fpos = fmom = fmass = flab = fcell = True
+
+      for (k,v) in self.queue:
+         info(" # Initializer (stage 1) parsing " + str(k) + " object.", verbosity.high)
+
+         if k == "cell":
+            if fcell :
+               warning("Overwriting previous cell parameters", verbosity.medium)
+            if v.mode == "pdb":
+               rh = init_pdb(v.value)[1].h
+            elif v.mode == "chk":
+               rh = init_chk(v.value)[1].h
+            else:
+               rh = v.value.reshape((3,3))
+            rh *= unit_to_internal("length",v.units,1.0)
+
+            simul.cell.h = rh
+            if simul.cell.V == 0.0:
+               ValueError("Cell provided has zero volume")
+
+            fcell = True
+         elif k == "masses":
+            if simul.beads.nbeads == 0:
+               raise ValueError("Cannot initialize the masses before the size of the system is known")
+            if fmass:
+               warning("Overwriting previous atomic masses", verbosity.medium)
+            if v.mode == "manual":
+               rm = v.value
+            else:
+               rm = init_beads(v, self.nbeads).m
+            rm *= unit_to_internal("mass",v.units,1.0)
+
+            if v.bead < 0:   # we are initializing the path
+               if (fmom and fmass):
+                  warning("Rescaling momenta to make up for changed mass", verbosity.medium)
+                  simul.beads.p /= simul.beads.sm3   # go to mass-scaled momenta, that are mass-invariant
+               if v.index < 0:
+                  simul.beads.m = rm
+               else: # we are initializing a specific atom
+                  simul.beads.m[v.index:v.index+1] = rm
+               if (fmom and fmass):  # finishes correcting the momenta
+                  simul.beads.p *= simul.beads.sm3  # back to normal momenta
+            else:
+               raise ValueError("Cannot change the mass of a single bead")
+            fmass = True
+
+         elif k == "labels":
+            if simul.beads.nbeads == 0:
+               raise ValueError("Cannot initialize the labels before the size of the system is known")
+            if flab:
+               warning("Overwriting previous atomic labels", verbosity.medium)
+            if v.mode == "manual":
+               rn = v.value
+            else:
+               rn = init_beads(v, self.nbeads).names
+
+            if v.bead < 0:   # we are initializing the path
+               if v.index < 0:
+                  simul.beads.names = rn
+               else: # we are initializing a specific atom
+                  simul.beads.names[v.index:v.index+1] = rn
+            else:
+               raise ValueError("Cannot change the label of a single bead")
+            flab = True
+
+         elif k == "positions":
+            if fpos:
+               warning("Overwriting previous atomic positions", verbosity.medium)
+            # read the atomic positions as a vector
+            rq = init_vector(v, self.nbeads)
+            rq *= unit_to_internal("length",v.units,1.0)
+            (nbeads, natoms) = rq.shape;   natoms /= 3
+
+            # check if we must initialize the simulation beads
+            if simul.beads.nbeads == 0:
+               if v.index >= 0:
+                  raise ValueError("Cannot initialize single atoms before the size of the system is known")
+               simul.beads.resize(natoms,self.nbeads)
+
+            set_vector(v, simul.beads.q, rq)
+            fpos = True
+
+         elif (k == "velocities" or k == "momenta") and v.mode == "thermal" :   # intercept here thermal initialization, so we don't need to check further down
+            if fmom:
+               warning("Overwriting previous atomic momenta", verbosity.medium)
+            if simul.beads.natoms == 0:
+               raise ValueError("Cannot initialize momenta before the size of the system is known.")
+            if not fmass:
+               raise ValueError("Trying to resample velocities before having masses.")
+
+            rtemp = v.value * unit_to_internal("temperature",v.units,1.0)
+            if rtemp <= 0:
+               warning("Using the simulation temperature to resample velocities", verbosity.low)
+               rtemp = simul.ensemble.temp
+            else:
+               info(" # Resampling velocities at temperature %s %s" % (v.value, v.units), verbosity.low)
+
+            # pull together a mock initialization to get NM masses right
+            #without too much code duplication
+            if v.bead >= 0:
+               raise ValueError("Cannot thermalize a single bead")
+            if v.index >= 0:
+               rnatoms = 1
+            else:
+               rnatoms = simul.beads.natoms
+            rbeads = Beads(rnatoms, simul.beads.nbeads)
+            if v.index < 0:
+               rbeads.m[:] = simul.beads.m
+            else:
+               rbeads.m[:] = simul.beads.m[v.index]
+            rnm = NormalModes(mode=simul.nm.mode, transform_method=simul.nm.transform_method, freqs=simul.nm.nm_freqs)
+            rens = Ensemble(dt=simul.ensemble.dt, temp=simul.ensemble.temp)
+            rnm.bind(rbeads,rens)
+            # then we exploit the sync magic to do a complicated initialization
+            # in the NM representation
+            # with (possibly) shifted-frequencies NM
+            rnm.pnm = simul.prng.gvec((rbeads.nbeads,3*rbeads.natoms))*np.sqrt(rnm.dynm3)*np.sqrt(rbeads.nbeads*rtemp*Constants.kb)
+
+            if v.index < 0:
+               simul.beads.p = rbeads.p
+            else:
+               simul.beads.p[:,3*v.index:3*(v.index+1)] = rbeads.p
+            fmom = True
+
+         elif k == "momenta":
+            if fmom:
+               warning("Overwriting previous atomic momenta", verbosity.medium)
+            # read the atomic momenta as a vector
+            rp = init_vector(v, self.nbeads, momenta = True)
+            rp *= unit_to_internal("momentum",v.units,1.0)
+            (nbeads, natoms) = rp.shape;   natoms /= 3
+
+            # checks if we must initialize the simulation beads
+            if simul.beads.nbeads == 0:
+               if v.index >= 0 :
+                  raise ValueError("Cannot initialize single atoms before the size of the system is known")
+               simul.beads.resize(natoms,self.nbeads)
+
+            rp *= np.sqrt(self.nbeads/nbeads)
+            set_vector(v, simul.beads.p, rp)
+            fmom = True
+
+         elif k == "velocities":
+            if fmom:
+               warning("Overwriting previous atomic momenta", verbosity.medium)
+            # read the atomic velocities as a vector
+            rv = init_vector(v, self.nbeads)
+            rv *= unit_to_internal("velocity",v.units,1.0)
+            (nbeads, natoms) = rv.shape;   natoms /= 3
+
+            # checks if we must initialize the simulation beads
+            if simul.beads.nbeads == 0 or not fmass:
+               ValueError("Cannot initialize velocities before the masses of the atoms are known")
+               simul.beads.resize(natoms,self.nbeads)
+
+            warning("Initializing from velocities uses the previously defined masses -- not the masses inferred from the file -- to build momenta", verbosity.low)
+            if v.index >= 0:
+               rv *= simul.beads.m[v.index]
+            elif v.bead >= 0:
+               rv *= simul.beads.m3[0]
+            else:
+               rv *= simul.beads.m3
+            rv *= np.sqrt(self.nbeads/nbeads)
+            set_vector(v, simul.beads.p, rv)
+            fmom = True
+         elif k == "thermostat": pass   # thermostats must be initialised in a second stage
+
+      if simul.beads.natoms == 0:
+         raise ValueError("Initializer could not initialize the atomic positions")
+      if simul.cell.V == 0:
+         raise ValueError("Initializer could not initialize the cell")
+      for i in range(simul.beads.natoms):
+         if simul.beads.m[i] <= 0:
+            raise ValueError("Initializer could not initialize the masses")
+         if simul.beads.names[i] == "":
+            raise ValueError("Initializer could not initialize the atom labels")
+      if not fmom:
+         warning("Momenta not specified in initialize. Will start with zero velocity if they are not specified in beads.", verbosity.low)
+
+   def init_stage2(self, simul):
+      """Initializes the simulation -- second stage.
+
+      Takes a simulation object which has been fully generated,
+      and restarts additional information such as the thermostat internal state.
+
+      Args:
+         simul: A simulation object to be initialized.
+
+      Raises:
+         ValueError: Raised if there is a problem with the initialization,
+            if something that should have been has not been, or if the objects
+            that have been specified are not compatible with each other.
+      """
+
+      for (k,v) in self.queue:
+         info(" # Initializer (stage 2) parsing " + str(k) + " object.", verbosity.high)
+
+         if k == "gle":
+            # read thermostat parameters from file
+            if not ( hasattr(simul.ensemble, "thermostat") ):
+               raise ValueError("Ensemble does not have a thermostat to initialize")
+            if not ( hasattr(simul.ensemble.thermostat, "s") ):
+               raise ValueError("There is nothing to initialize in non-GLE thermostats")
+            ssimul = simul.ensemble.thermostat.s
+            if v.mode == "manual":
+               sinput = v.value.copy()
+               if (sinput.size() != ssimul.size() ):
+                  raise ValueError("Size mismatch in thermostat initialization data")
+               sinput.shape = ssimul.shape
+            elif v.mode == "chk":
+               rthermo = init_chk(v.value)[2]
+               if not hasattr(rthermo,"s"):
+                  raise ValueError("Checkpoint file does not contain usable thermostat data")
+               sinput = rthermo.s.copy()
+               if sinput.shape != ssimul.shape :
+                  raise ValueError("Shape mismatch in thermostat initialization data")
+
+            # if all the preliminary checks are good, we can initialize the s's
+            ssimul[:] = sinput
diff --git a/tools/i-pi/ipi/engine/normalmodes.py b/tools/i-pi/ipi/engine/normalmodes.py
new file mode 100644
index 0000000000000000000000000000000000000000..38566736f7e1e131e4e6f5d385fafbd8a15ab8b0
--- /dev/null
+++ b/tools/i-pi/ipi/engine/normalmodes.py
@@ -0,0 +1,400 @@
+"""Contains the classes that deal with the normal mode representation.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Deals with the normal mode transformation, including the complications
+introduced by PA-CMD when the bead masses are rescaled. Also deals with
+the change in the dynamics introduced by this mass-scaling, and has its
+own functions to calculate the kinetic energy, and the exact propagator
+in the normal mode representation under the ring polymer Hamiltonian.
+
+Classes:
+   NormalModes: Deals with the normal mode transformation in RPMD and PA-CMD.
+"""
+
+import numpy as np
+from ipi.utils.depend import *
+from ipi.utils import units
+from ipi.utils import nmtransform
+from ipi.utils.messages import verbosity, warning, info
+
+__all__ = [ "NormalModes" ]
+
+class NormalModes(dobject):
+   """ A helper class to manipulate the path NM.
+
+   Normal-modes transformation, determination of path frequencies,
+   dynamical mass matrix change, etc.
+
+   Attributes:
+      natoms: The number of atoms.
+      nbeads: The number of beads.
+      beads: The beads object for which the normal mode transformation should
+         be done.
+      ensemble: The ensemble object, specifying the temperature to hold the
+         system to.
+      transform: A nm_trans object that contains the functions that are
+         required for the normal mode transformation.
+
+   Depend objects:
+      mode: A string specifying how the bead masses are chosen.
+      transform_method: A string specifying how to do the normal mode
+         transformation.
+      nm_freqs: An array that specifies how the normal mode frequencies
+         of the ring polymers are to be calculated, and thus how the
+         bead masses should be chosen.
+      qnm: The bead positions in the normal mode representation. Depends on
+         beads.q.
+      pnm: The bead momenta in the normal mode representation. Depends on
+         beads.p.
+      omegan: The effective vibrational frequency for the interaction
+         between the replicas. Depends on the simulation temperature.
+      omegan2: omegan**2.
+      omegak: The normal mode frequencies for the free ring polymer.
+         Depends on omegan.
+      prop_pq: An array holding the exact normal mode propagator for the
+         free ring polymer, using mass scaled coordinates.
+         See J. Chem. Phys. 133, 124101 (2010). Depends on the bead masses
+         and the timestep.
+      nm_factor: An array of dynamical mass factors associated with each of
+         the normal modes. Depends on nm_freqs and mode.
+      dynm3: An array that gives the dynamical masses of individual atoms in the
+         normal modes representation. Depends on nm_factor and beads.m3.
+      dynomegak: The scaled vibrational frequencies. Depends on nm_factor and
+         omegak.
+      kins: A list of the kinetic energy for each normal mode, as
+         calculated in the normal mode representation, using the
+         dynamical mass factors. Depends on beads.sm3, beads.p and nm_factor.
+      kin: The total kinetic energy, as calculated in the normal mode
+         representation, using the dynamical mass factors.
+      kstress: The kinetic stress tensor, as calculated in the normal mode
+         representation, using the dynamical mass factors. Depends on
+         beads.sm3, beads.p and nm_factor.
+   """
+
+   def __init__(self, mode="rpmd", transform_method="fft", freqs=None):
+      """Initializes NormalModes.
+
+      Sets the options for the normal mode transform.
+
+      Args:
+         mode: A string specifying how to calculate the bead masses.
+         transform_method: A string specifying how to do the normal mode
+            transformation.
+         freqs: A list of data used to calculate the dynamical mass factors.
+      """
+
+      if freqs is None:
+         freqs = []
+      dset(self,"mode",   depend_value(name='mode', value=mode))
+      dset(self,"transform_method",
+         depend_value(name='transform_method', value=transform_method))
+      dset(self,"nm_freqs",
+         depend_array(name="nm_freqs",value=np.asarray(freqs, float) ) )
+
+   def bind(self, beads, ensemble):
+      """ Initializes the normal modes object and binds to beads and ensemble.
+
+      Do all the work down here as we need a full-formed necklace and ensemble
+      to know how this should be done.
+
+      Args:
+         beads: A beads object to be bound.
+         ensemble: An ensemble object to be bound.
+      """
+
+      self.nbeads = beads.nbeads
+      self.natoms = beads.natoms
+
+      # stores a reference to the bound beads and ensemble objects
+      self.beads = beads
+      self.ensemble = ensemble
+
+      # sets up what's necessary to perform nm transformation.
+      if self.transform_method == "fft":
+         self.transform = nmtransform.nm_fft(nbeads=self.nbeads, natoms=self.natoms)
+      elif self.transform_method == "matrix":
+         self.transform = nmtransform.nm_trans(nbeads=self.nbeads)
+
+      # creates arrays to store normal modes representation of the path.
+      # must do a lot of piping to create "ex post" a synchronization between the beads and the nm
+      sync_q = synchronizer()
+      sync_p = synchronizer()
+      dset(self,"qnm",
+         depend_array(name="qnm",
+            value=np.zeros((self.nbeads,3*self.natoms), float),
+               func={"q": (lambda : self.transform.b2nm(depstrip(self.beads.q)) ) },
+                  synchro=sync_q ) )
+      dset(self,"pnm",
+         depend_array(name="pnm",
+            value=np.zeros((self.nbeads,3*self.natoms), float),
+               func={"p": (lambda : self.transform.b2nm(depstrip(self.beads.p)) ) },
+                  synchro=sync_p ) )
+
+      # must overwrite the functions
+      dget(self.beads, "q")._func = { "qnm": (lambda : self.transform.nm2b(depstrip(self.qnm)) )  }
+      dget(self.beads, "p")._func = { "pnm": (lambda : self.transform.nm2b(depstrip(self.pnm)) )  }
+      dget(self.beads, "q").add_synchro(sync_q)
+      dget(self.beads, "p").add_synchro(sync_p)
+
+      # also within the "atomic" interface to beads
+      for b in range(self.nbeads):
+         dget(self.beads._blist[b],"q")._func = { "qnm": (lambda : self.transform.nm2b(depstrip(self.qnm)) )  }
+         dget(self.beads._blist[b],"p")._func = { "pnm": (lambda : self.transform.nm2b(depstrip(self.pnm)) )  }
+         dget(self.beads._blist[b],"q").add_synchro(sync_q)
+         dget(self.beads._blist[b],"p").add_synchro(sync_p)
+
+
+      # finally, we mark the beads as those containing the set positions
+      dget(self.beads, "q").update_man()
+      dget(self.beads, "p").update_man()
+
+      # create path-frequencies related properties
+      dset(self,"omegan",
+         depend_value(name='omegan', func=self.get_omegan,
+            dependencies=[dget(self.ensemble,"temp")]) )
+      dset(self,"omegan2", depend_value(name='omegan2',func=self.get_omegan2,
+            dependencies=[dget(self,"omegan")]) )
+      dset(self,"omegak", depend_array(name='omegak',
+         value=np.zeros(self.beads.nbeads,float),
+            func=self.get_omegak, dependencies=[dget(self,"omegan")]) )
+
+      # sets up "dynamical" masses -- mass-scalings to give the correct RPMD/CMD dynamics
+      dset(self,"nm_factor", depend_array(name="nmm",
+         value=np.zeros(self.nbeads, float), func=self.get_nmm,
+            dependencies=[dget(self,"nm_freqs"), dget(self,"mode") ]) )
+      dset(self,"dynm3", depend_array(name="dm3",
+         value=np.zeros((self.nbeads,3*self.natoms), float),func=self.get_dynm3,
+            dependencies=[dget(self,"nm_factor"), dget(self.beads, "m3")] ) )
+      dset(self,"dynomegak", depend_array(name="dynomegak",
+         value=np.zeros(self.nbeads, float), func=self.get_dynwk,
+            dependencies=[dget(self,"nm_factor"), dget(self,"omegak") ]) )
+
+      dset(self,"prop_pq",
+         depend_array(name='prop_pq',value=np.zeros((self.beads.nbeads,2,2)),
+            func=self.get_prop_pq,
+               dependencies=[dget(self,"omegak"), dget(self,"nm_factor"), dget(self.ensemble,"dt")]) )
+
+      # if the mass matrix is not the RPMD one, the MD kinetic energy can't be
+      # obtained in the bead representation because the masses are all mixed up
+      dset(self,"kins",
+         depend_array(name="kins",value=np.zeros(self.nbeads, float),
+            func=self.get_kins,
+               dependencies=[dget(self,"pnm"), dget(self.beads,"sm3"), dget(self, "nm_factor") ] ))
+      dset(self,"kin",
+         depend_value(name="kin", func=self.get_kin,
+            dependencies=[dget(self,"kins")] ))
+      dset(self,"kstress",
+         depend_array(name="kstress",value=np.zeros((3,3), float),
+            func=self.get_kstress,
+               dependencies=[dget(self,"pnm"), dget(self.beads,"sm3"), dget(self, "nm_factor") ] ))
+
+   def get_omegan(self):
+      """Returns the effective vibrational frequency for the interaction
+      between replicas.
+      """
+
+      return self.ensemble.temp*self.nbeads*units.Constants.kb/units.Constants.hbar
+
+   def get_omegan2(self):
+      """Returns omegan**2."""
+
+      return self.omegan**2
+
+   def get_omegak(self):
+      """Gets the normal mode frequencies.
+
+      Returns:
+         A list of the normal mode frequencies for the free ring polymer.
+         The first element is the centroid frequency (0.0).
+      """
+
+      return 2*self.omegan*np.array([np.sin(k*np.pi/self.nbeads) for k in range(self.nbeads)])
+
+   def get_dynwk(self):
+      """Gets the dynamical normal mode frequencies.
+
+      Returns:
+         A list of the scaled normal mode frequencies for the free ring polymer.
+         The first element is the centroid frequency (0.0).
+      """
+
+      return self.omegak/np.sqrt(self.nm_factor)
+
+   def get_prop_pq(self):
+      """Gets the normal mode propagator matrix.
+
+      Note the special treatment for the centroid normal mode, which is
+      propagated using the standard velocity Verlet algorithm as required.
+      Note that both the normal mode positions and momenta are propagated
+      using this matrix.
+
+      Returns:
+         An array of the form (nbeads, 2, 2). Each 2*2 array prop_pq[i,:,:]
+         gives the exact propagator for the i-th normal mode of the
+         ring polymer.
+      """
+
+      dt = self.ensemble.dt
+      pqk = np.zeros((self.nbeads,2,2), float)
+      pqk[0] = np.array([[1,0], [dt,1]])
+
+      for b in range(1, self.nbeads):
+         sk = np.sqrt(self.nm_factor[b]) # NOTE THAT THE PROPAGATOR USES MASS-SCALED MOMENTA!
+
+         dtomegak = self.omegak[b]*dt/sk
+         c = np.cos(dtomegak)
+         s = np.sin(dtomegak)
+         pqk[b,0,0] = c
+         pqk[b,1,1] = c
+         pqk[b,0,1] = -s*self.omegak[b]*sk
+         pqk[b,1,0] = s/(self.omegak[b]*sk)
+
+      return pqk
+
+   def get_nmm(self):
+      """Returns dynamical mass factors, i.e. the scaling of normal mode
+      masses that determine the path dynamics (but not statics)."""
+
+      # also checks that the frequencies and the mode given in init are
+      # consistent with the beads and ensemble
+
+      dmf = np.zeros(self.nbeads,float)
+      dmf[:] = 1.0
+      if self.mode == "rpmd":
+         if len(self.nm_freqs) > 0:
+            warning("nm.frequencies will be ignored for RPMD mode.", verbosity.low)
+      elif self.mode == "manual":
+         if len(self.nm_freqs) != self.nbeads-1:
+            raise ValueError("Manual path mode requires (nbeads-1) frequencies, one for each internal mode of the path.")
+         for b in range(1, self.nbeads):
+            sk = self.omegak[b]/self.nm_freqs[b-1]
+            dmf[b] = sk**2
+      elif self.mode == "pa-cmd":
+         if len(self.nm_freqs) > 1:
+            warning("Only the first element in nm.frequencies will be considered for PA-CMD mode.", verbosity.low)
+         if len(self.nm_freqs) == 0:
+            raise ValueError("PA-CMD mode requires the target frequency of all the internal modes.")
+         for b in range(1, self.nbeads):
+            sk = self.omegak[b]/self.nm_freqs[0]
+            info(" ".join(["NM FACTOR", str(b), str(sk), str(self.omegak[b]), str(self.nm_freqs[0])]), verbosity.medium)
+            dmf[b] = sk**2
+      elif self.mode == "wmax-cmd":
+         if len(self.nm_freqs) > 2:
+            warning("Only the first two element in nm.frequencies will be considered for WMAX-CMD mode.", verbosity.low)
+         if len(self.nm_freqs) < 2:
+            raise ValueError("WMAX-CMD mode requires [wmax, wtarget]. The normal modes will be scaled such that the first internal mode is at frequency wtarget and all the normal modes coincide at frequency wmax.")
+         wmax = self.nm_freqs[0]
+         wt = self.nm_freqs[1]
+         for b in range(1, self.nbeads):
+            sk = 1.0/np.sqrt((wt)**2*(1+(wmax/self.omegak[1])**2)/(wmax**2+(self.omegak[b])**2))
+            dmf[b] = sk**2
+
+      return dmf
+
+   def get_dynm3(self):
+      """Returns an array with the dynamical masses of individual atoms in the normal modes representation."""
+
+      dm3 = np.zeros(self.beads.m3.shape,float)
+      for b in range(self.nbeads):
+         dm3[b] = self.beads.m3[b]*self.nm_factor[b]
+
+      return dm3
+
+   def free_qstep(self):
+      """Exact normal mode propagator for the free ring polymer.
+
+      Note that the propagator works in mass scaled coordinates, so that the
+      propagator matrix can be determined independently from the particular
+      atom masses, and so the same propagator will work for all the atoms in
+      the system. All the ring polymers are propagated at the same time by a
+      matrix multiplication.
+
+      Also note that the centroid coordinate is propagated in qcstep, so is
+      not altered here.
+      """
+
+      if self.nbeads == 1:
+         pass
+      else:
+         pq = np.zeros((2,self.natoms*3),float)
+         sm = depstrip(self.beads.sm3)[0]
+         prop_pq = depstrip(self.prop_pq)
+         for k in range(1,self.nbeads):
+            pq[0,:] = depstrip(self.pnm)[k]/sm
+            pq[1,:] = depstrip(self.qnm)[k]*sm
+            pq = np.dot(prop_pq[k],pq)
+            self.qnm[k] = pq[1,:]/sm
+            self.pnm[k] = pq[0,:]*sm
+
+   def get_kins(self):
+      """Gets the MD kinetic energy for all the normal modes.
+
+      Returns:
+         A list of the kinetic energy for each NM.
+      """
+
+      kmd = np.zeros(self.nbeads,float)
+      sm = depstrip(self.beads.sm3[0])
+      pnm = depstrip(self.pnm)
+      nmf = depstrip(self.nm_factor)
+
+      # computes the MD ke in the normal modes representation, to properly account for CMD mass scaling
+      for b in range(self.nbeads):
+         sp = pnm[b]/sm                      # mass-scaled momentum of b-th NM
+         kmd[b] = np.dot(sp,sp)*0.5/nmf[b]   # include the partially adiabatic CMD mass scaling
+
+      return kmd
+
+   def get_kin(self):
+      """Gets the total MD kinetic energy.
+
+      Note that this does not correspond to the quantum kinetic energy estimate
+      for the system.
+
+      Returns:
+         The sum of the kinetic energy of each NM in the path.
+      """
+
+      return self.kins.sum()
+
+   def get_kstress(self):
+      """Calculates the total MD kinetic stress tensor.
+
+      Note that this does not correspond to the quantum kinetic stress tensor
+      estimate for the system.
+
+      Returns:
+         The sum of the MD kinetic stress tensor contributions from each NM.
+      """
+
+      kmd = np.zeros((3,3),float)
+      sm = depstrip(self.beads.sm3[0])
+      pnm = depstrip(self.pnm)
+      nmf = depstrip(self.nm_factor)
+
+      for b in range(self.nbeads):
+         sp = pnm[b]/sm  # mass-scaled momentum of b-th NM
+
+         for i in range(3):
+            for j in range(3):
+               # computes the outer product of the p of various normal modes
+               # singling out Cartesian components to build the tensor
+               # also takes care of the possibility of having non-RPMD masses
+               kmd[i,j] += np.dot(sp[i:3*self.natoms:3],sp[j:3*self.natoms:3])/nmf[b]
+
+      return kmd
diff --git a/tools/i-pi/ipi/engine/outputs.py b/tools/i-pi/ipi/engine/outputs.py
new file mode 100644
index 0000000000000000000000000000000000000000..fb5ebda96ed7065508ca69941c31f0b060bb63a4
--- /dev/null
+++ b/tools/i-pi/ipi/engine/outputs.py
@@ -0,0 +1,378 @@
+"""Classes to deal with output of simulation data.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Holds classes to deal with the output of different properties, trajectories
+and the restart files.
+
+Classes:
+   PropertyOutput: Deals with outputting properties.
+   TrajectoryOutput: Deals with outputting trajectories.
+   CheckpointOutput: Deals with outputting restart files.
+"""
+
+import os
+import numpy as np
+import ipi.inputs.simulation
+from ipi.utils.depend import *
+from ipi.utils.io.io_xml import *
+from ipi.engine.properties import getkey
+
+__all__ = [ 'PropertyOutput', 'TrajectoryOutput', 'CheckpointOutput' ]
+
+class PropertyOutput(dobject):
+   """Class dealing with outputting a set of properties to file.
+
+   Does not do any calculation, just manages opening a file, getting data
+   from a Properties object and outputting with the desired stride.
+
+   Attributes:
+      filename: The name of the file to output to.
+      outlist: A list of the properties to be output.
+      stride: The number of steps that should be taken between outputting the
+         data to file.
+      flush: How often we should flush to disk.
+      nout: Number of steps since data was last flushed.
+      out: The output stream on which to output the properties.
+      simul: The simulation object to get the data to be output from.
+   """
+
+
+   def __init__(self, filename="out", stride=1, flush=1, outlist=None):
+      """Initializes a property output stream opening the corresponding
+      file name.
+
+      Also writes out headers.
+
+      Args:
+         filename: A string giving the name of the file to be output to.
+         stride: An integer giving how many steps should be taken between
+            outputting the data to file.
+         flush: Number of writes to file between flushing data.
+         outlist: A list of all the properties that should be output.
+      """
+
+      if outlist is None:
+         outlist = np.zeros(0,np.dtype('|S1024'))
+      self.filename = filename
+      self.outlist = np.asarray(outlist,np.dtype('|S1024'))
+      self.stride = stride
+      self.flush = flush
+      self.nout = 0
+      self.out = None
+
+   def bind(self, simul):
+      """Binds output proxy to simulation object.
+
+      Args:
+         simul: A simulation object to be bound.
+      """
+
+      self.simul = simul
+
+      # Checks as soon as possible if some asked-for properties are
+      # missing or mispelled
+      for what in self.outlist:
+         key = getkey(what)
+         if not key in self.simul.properties.property_dict.keys():
+            print "Computable properties list: ", self.simul.properties.property_dict.keys()
+            raise KeyError(key + " is not a recognized property")
+
+      self.open_stream()
+
+   def open_stream(self):
+      """Opens the output stream."""
+
+      try:
+         self.out = open(self.filename, "a")
+      except:
+         raise ValueError("Could not open file " + self.filename + " for output")
+
+      # print nice header if information is available on the properties
+      if (self.simul.step == 0) :
+         icol = 1
+         for what in self.outlist:
+            ohead = "# "
+            key = getkey(what)
+            prop = self.simul.properties.property_dict[key]
+
+            if "size" in prop and prop["size"] > 1:
+               ohead += "cols.  %3d-%-3d" % ( icol, icol+prop["size"] - 1 )
+               icol += prop["size"]
+            else:
+               ohead += "column %3d    " % ( icol )
+               icol += 1
+            ohead += " --> %s " % (what)
+            if "help" in prop:
+               ohead += ": " + prop["help"]
+            self.out.write(ohead + "\n")
+
+   def close_stream():
+      """Closes the output stream."""
+
+      self.out.close()
+
+   def write(self):
+      """Outputs the required properties of the system.
+
+      Note that properties are outputted using the same format as for the
+      output to the xml checkpoint files, as specified in io_xml.
+
+      Raises:
+         KeyError: Raised if one of the properties specified in the output list
+            are not contained in the property_dict member of properties.
+      """
+
+      if not (self.simul.step + 1) % self.stride == 0:
+         return
+      self.out.write("  ")
+      for what in self.outlist:
+         try:
+            quantity = self.simul.properties[what]
+         except KeyError:
+            raise KeyError(what + " is not a recognized property")
+         if not hasattr(quantity,"__len__") :
+            self.out.write(write_type(float, quantity) + "   ")
+         else:
+            for el in quantity:
+               self.out.write(write_type(float, el) + " ")
+
+      self.out.write("\n")
+
+      self.nout += 1
+      if self.flush > 0 and self.nout >= self.flush :
+         self.out.flush()
+         os.fsync(self.out)  # we REALLY want to print out! pretty please OS let us do it.
+         self.nout = 0
+
+
+class TrajectoryOutput(dobject):
+   """Class dealing with outputting atom-based properties as a
+   trajectory file.
+
+   Does not do any calculation, just manages opening a file, getting data
+   from a Trajectories object and outputting with the desired stride.
+
+   Attributes:
+      filename: The (base) name of the file to output to.
+      format: The format of the trajectory file to be created.
+      what: The trajectory that needs to be output.
+      stride: The number of steps that should be taken between outputting the
+         data to file.
+      out: The output stream on which to output the trajectories.
+      flush: How often we should flush to disk.
+      nout: Number of steps since data was last flushed.
+      ibead: Index of the replica to print the trajectory of.
+      cell_units: The units that the cell parameters are given in.
+      simul: The simulation object to get the data to be output from.
+   """
+
+   def __init__(self, filename="out", stride=1, flush=1, what="", format="xyz", cell_units="atomic_unit", ibead=-1):
+      """ Initializes a property output stream opening the corresponding
+      file name.
+
+      Also writes out headers.
+
+      Args:
+         filename: A string giving the name of the file to be output to.
+         stride: An integer giving how many steps should be taken between
+            outputting the data to file.
+         flush: How often we should flush to disk
+         what: A string specifying what trajectory should be output.
+         format: A string specifying the type of trajectory file to be created.
+         cell_units: A string specifying the units that the cell parameters are
+            given in.
+         ibead: If positive, prints out only the selected bead. If negative, prints out one file per bead.
+      """
+
+      self.filename = filename
+      self.what = what
+      self.stride = stride
+      self.flush = flush
+      self.ibead = ibead
+      self.format = format
+      self.cell_units = cell_units
+      self.out = None
+      self.nout = 0
+
+   def bind(self, simul):
+      """Binds output proxy to simulation object.
+
+      Args:
+         simul: A simulation object to be bound.
+      """
+
+      self.simul = simul
+
+      # Checks as soon as possible if some asked-for trajs are missing or mispelled
+      key = getkey(self.what)
+      if not key in self.simul.trajs.traj_dict.keys():
+         print "Computable trajectories list: ", self.simul.trajs.traj_dict.keys()
+         raise KeyError(key + " is not a recognized output trajectory")
+
+      self.open_stream()
+
+   def open_stream(self):
+      """Opens the output stream(s)."""
+
+      if getkey(self.what) in [ "positions", "velocities", "forces", "extras" ]:
+         # must write out trajectories for each bead, so must create b streams
+         self.out = []
+         for b in range(self.simul.beads.nbeads):
+            # zero-padded bead number
+            padb = ( ("%0" + str(int(1 + np.floor(np.log(self.simul.beads.nbeads)/np.log(10)))) + "d") % (b) )
+            try:
+               if (self.ibead < 0 or self.ibead == b):
+                  if getkey(self.what) == "extras":
+                     self.out.append(open(self.filename + "_" + padb, "a"))
+                  else:
+                     self.out.append(open(self.filename + "_" + padb + "." + self.format, "a"))
+               else:
+                  self.out.append(None) # creates null outputs if a
+                                        # single bead output is chosen
+            except:
+               raise ValueError("Could not open file " + self.filename + "_" + padb + "." + self.format + " for output")
+      else:
+         try:
+            self.out = ( open(self.filename + "." + self.format, "a") )
+         except:
+            raise ValueError("Could not open file " + self.filename + "." + self.format + " for output")
+
+   def close_stream():
+      """Closes the output stream."""
+
+      if hasattr(self.out, "__getitem__"):
+         for o in self.out:
+            o.close()
+      else:
+         self.out.close()
+
+   def write(self):
+      """Writes out the required trajectories."""
+
+      if not (self.simul.step + 1) % self.stride == 0:
+         return
+
+      doflush = False
+      self.nout += 1
+      if self.flush > 0 and self.nout >= self.flush :
+         doflush = True
+         self.nout = 0
+
+      # quick-and-dirty way to check if a trajectory is "global" or per-bead
+      # Checks to see if there is a list of files or just a single file.
+      if hasattr(self.out, "__getitem__"):
+         if self.ibead < 0:
+            for b in range(len(self.out)):
+               self.simul.trajs.print_traj(self.what, self.out[b], b, format=self.format, cell_units=self.cell_units, flush=doflush)
+         elif self.ibead < len(self.out):
+            self.simul.trajs.print_traj(self.what, self.out[self.ibead], self.ibead, format=self.format, cell_units=self.cell_units, flush=doflush)
+         else:
+            raise ValueError("Selected bead index " + str(self.ibead) + " does not exist for trajectory " + self.what)
+      else:
+         self.simul.trajs.print_traj(self.what, self.out, b=0, format=self.format, cell_units=self.cell_units, flush=doflush)
+
+
+class CheckpointOutput(dobject):
+   """Class dealing with outputting checkpoints.
+
+   Saves the complete status of the simulation at regular intervals.
+
+   Attributes:
+      filename: The (base) name of the file to output to.
+      step: the number of times a checkpoint has been written out.
+      stride: The number of steps that should be taken between outputting the
+         data to file.
+      overwrite: If True, the checkpoint file is overwritten at each output.
+         If False, will output to 'filename_step'. Note that no check is done
+         on whether 'filename_step' exists already.
+      simul: The simulation object to get the data to be output from.
+      status: An input simulation object used to write out the checkpoint file.
+   """
+
+
+   def __init__(self, filename="restart", stride=1000, overwrite=True, step=0):
+      """Initializes a checkpoint output proxy.
+
+      Args:
+         filename: A string giving the name of the file to be output to.
+         stride: An integer giving how many steps should be taken between
+            outputting the data to file.
+         overwrite: If True, the checkpoint file is overwritten at each output.
+            If False, will output to 'filename_step'. Note that no check is done
+            on whether 'filename_step' exists already.
+         step: The number of checkpoint files that have been created so far.
+      """
+
+      self.filename = filename
+      self.step = step
+      self.stride = stride
+      self.overwrite = overwrite
+
+   def bind(self, simul):
+      """Binds output proxy to simulation object.
+
+      Args:
+         simul: A simulation object to be bound.
+      """
+
+      self.simul = simul
+      self.status = ipi.inputs.simulation.InputSimulation()
+      self.status.store(simul)
+
+   def store(self):
+      """Stores the current simulation status.
+
+      Used so that, if halfway through a step a kill signal is received,
+      we can output a checkpoint file corresponding to the beginning of the
+      current step, which is the last time that both the velocities and
+      positions would have been consistent.
+      """
+
+      self.status.store(self.simul)
+
+   def write(self, store=True):
+      """Writes out the required trajectories.
+
+      Used for both the checkpoint files and the soft-exit restart file.
+      We have slightly different behaviour for these two different types of
+      checkpoint file, as the soft-exit files have their store() function
+      called automatically, and we do not want this to be updated as the
+      status of the simulation after a soft-exit call is unlikely to be in
+      a consistent state. On the other hand, the standard checkpoint files
+      are not automatically updated in this way, and we must manually store the
+      current state of the system before writing them.
+
+      Args:
+         store: A boolean saying whether the state of the system should be
+            stored before writing the checkpoint file.
+      """
+
+      if not (self.simul.step + 1) % self.stride == 0:
+         return
+
+      if self.overwrite:
+         filename = self.filename
+      else:
+         filename = self.filename + "_" + str(self.step)
+
+      if store:
+         self.step += 1    # advances the step counter before saving, so next time the correct index will be loaded.
+         self.store()
+      check_file = open(filename, "w")
+      check_file.write(self.status.write(name="simulation"))
+      check_file.close()
diff --git a/tools/i-pi/ipi/engine/properties.py b/tools/i-pi/ipi/engine/properties.py
new file mode 100644
index 0000000000000000000000000000000000000000..1ea07bda87b3a79f43b24fad16308e437b0ec564
--- /dev/null
+++ b/tools/i-pi/ipi/engine/properties.py
@@ -0,0 +1,1273 @@
+"""Holds the class which computes important properties of the system, and
+prepares them for output.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Classes:
+   Properties: This is the class that holds all the algorithms to calculate
+      the important properties that should be output.
+   Trajectories: This class deals with outputting all position data in the
+      appropriate format.
+
+Functions:
+   getkey: This function strips the units and argument list specification
+      from a string specifying an output parameter.
+   getall: This function gives the keyword, units and argument list
+      specification from a string specifying an output parameter.
+   help_latex: This returns a string that can be used in the manual to
+      specify the different available outputs.
+"""
+
+__all__ = ['Properties', 'Trajectories', 'getkey', 'getall', 'help_latex']
+
+import os
+import numpy as np
+from ipi.utils.messages import verbosity, info, warning
+from ipi.utils.depend import *
+from ipi.utils.units import Constants, unit_to_internal, unit_to_user
+from ipi.utils.mathtools import logsumlog, h2abc_deg
+from ipi.utils.io import *
+from ipi.engine.atoms import *
+from ipi.engine.cell import *
+from ipi.engine.ensembles import *
+from ipi.engine.forces import *
+
+def getkey(pstring):
+   """Strips units and argument lists from a property/trajectory keyword.
+
+   Args:
+      pstring: The string input by the user that specifies an output,
+         which in general will specify units and argument lists.
+
+   Returns: A string giving the keyword for the property, stripped of the
+      argument lists and units key words.
+   """
+
+   pa = pstring.find('(')
+   if pa < 0:
+      pa = len(pstring)
+   pu = pstring.find('{')
+   if pu < 0:
+      pu = len(pstring)
+   return pstring[0:min(pa,pu)].strip()
+
+def getall(pstring):
+   """Returns the keyword, units and argument list separately.
+
+   Args:
+      pstring: The string input by the user that specifies an output,
+         which in general will specify units and argument lists.
+
+   Returns: A tuple giving the keyword for the property, and its units
+      argument list and key word argument list.
+   """
+
+   unit = ""
+   arglist = ()
+   kwarglist = {}
+   unstart = len(pstring)
+   argstart = unstart
+
+   if '}' in pstring:
+      # the property has a user-defined unit
+      unstart = pstring.find('{')
+      unstop = pstring.find('}', unstart)
+      if unstop == -1:
+         raise ValueError("Incorrect format in units specification " + pstring)
+      unit = pstring[unstart+1:unstop]
+   if '(' in pstring:
+      # If the property has additional arguments
+      argstart = pstring.find('(')
+      argstop = pstring.find(')', argstart)
+      if argstop == -1:
+         raise ValueError("Incorrect format in argument list " + pstring)
+
+      argstr = pstring[argstart:argstop+1]
+      arglist = io_xml.read_tuple(argstr, delims="()", split=";", arg_type=str)
+      for arg in arglist:
+         # If a keyword argument is used
+         equals = arg.find('=')
+         if equals >= 0:
+            kwarglist[arg[0:equals].strip()] = arg[equals+1:].strip()
+            arglist = tuple(a for a in arglist if not a == arg)
+
+   pstring = pstring[0:min(unstart,argstart)].strip() # strips the arguments from pstring name
+
+   return (pstring, unit, arglist, kwarglist)
+
+def help_latex(idict, standalone=True):
+   """Function to generate a LaTeX formatted file.
+
+   Args:
+      idict: Either property_dict or traj_dict, to be used to
+         generate the help file.
+      standalone: A boolean giving whether the latex file produced will be a
+         stand-alone document, or will be intended as a section of a larger
+         document with cross-references between the different sections.
+
+   Returns:
+      A LaTeX formatted string.
+   """
+
+   rstr = ""
+   if standalone:
+      #assumes that it is a stand-alone document, so must have document
+      #options.
+      rstr += r"\documentclass[12pt,fleqn]{report}"
+      rstr += r"""
+\usepackage{etoolbox}
+\usepackage{suffix}
+
+\newcommand{\ipiitem}[3]{%
+\ifblank{#1}{}{\ifstrequal{#1}{\underline{}}{}{
+{\noindent\textbf{#1}:\rule{0.0pt}{1.05\baselineskip}\quad}}}% uses a strut to add a bit of vertical space
+{#2}\parskip=0pt\par
+\ifblank{#3}{}%
+{ {\hfill\raggedleft\textit{\small #3}\par} }
+}
+"""
+      rstr += "\n\\begin{document}\n"
+      rstr += "The following are the different allowable ouputs:\n\\par"
+
+   for out in sorted(idict):
+      rstr += "\\ipiitem{" + out + "}"
+      if "longhelp" in idict[out]:
+         rstr += "{" + idict[out]['longhelp'] +"}"
+      else:
+         rstr += "{" + idict[out]['help'] +"}"
+
+      #see if there are additional attributes to print out
+      xstr = ""
+      if "dimension" in idict[out] and  idict[out]['dimension'] != "undefined": #doesn't print out dimension if not necessary.
+         xstr += "dimension: " + idict[out]['dimension'] + '; '
+      if "size" in idict[out]:
+         xstr += "size: " + str(idict[out]['size']) +"; "
+      rstr += "{" + xstr + "}"
+
+   if standalone:
+      #ends the created document if it is not part of a larger document
+      rstr += "\\end{document}"
+
+   # Some escape characters are necessary for the proper latex formatting
+   rstr = rstr.replace('_', '\\_')
+   rstr = rstr.replace('\\\\_', '\\_')
+   rstr = rstr.replace('...', '\\ldots ')
+   rstr = rstr.replace('<', '$<$')
+   rstr = rstr.replace('>', '$>$')
+   rstr = rstr.replace('[', '$[$')
+   rstr = rstr.replace(']', '$]$')
+
+   return rstr
+
+
+class Properties(dobject):
+   """A proxy to compute and output properties of the system.
+
+   Takes the fundamental properties calculated during the simulation, and
+   prepares them for output. It also contains simple algorithms to calculate
+   other properties not calculated during the simulation itself, so that
+   these can also be output.
+
+   Attributes:
+      fd_delta: A float giving the size of the finite difference
+         parameter used in the Yamamoto kinetic energy estimator. Defaults
+         to _DEFAULT_FINDIFF.
+      _DEFAULT_FDERROR: A float giving the size of the minimum precision
+         allowed for the finite difference calculation in the Yamamoto kinetic
+         energy estimator.
+      _DEFAULT_MINFID: A float giving the maximum displacement in the Yamamoto
+         kinetic energy estimator.
+      dbeads: A dummy Beads object used in the Yamamoto kinetic energy
+         estimator.
+      dforces: A dummy Forces object used in the Yamamoto kinetic energy
+         estimator.
+      simul: The Simulation object containing the data to be output.
+      ensemble: An ensemble object giving the objects necessary for producing
+         the correct ensemble.
+      beads: A beads object giving the atoms positions.
+      nm: A normal modes object giving the normal mode representation.
+      cell: A cell object giving the system box.
+      forces: A forcefield object giving the force calculator for each
+         replica of the system.
+      property_dict: A dictionary containing all the properties that can be
+         output.
+   """
+
+   _DEFAULT_FINDIFF = 1e-5
+   _DEFAULT_FDERROR = 1e-9
+   _DEFAULT_MINFID = 1e-12
+
+   def __init__(self):
+      """Initialises Properties."""
+
+      self.property_dict = {
+      "step": {       "dimension" : "number",
+                      "help" : "The current simulation time step.",
+                      'func': (lambda: (1 + self.simul.step))},
+      "time": {       "dimension": "time",
+                      "help": "The elapsed simulation time.",
+                      'func': (lambda: (1 + self.simul.step)*self.ensemble.dt)},
+      "temperature": {"dimension": "temperature",
+                      "help": "The current temperature, as obtained from the MD kinetic energy.",
+                      "longhelp" : """The current temperature, as obtained from the MD kinetic energy of the (extended)
+                                      ring polymer. Takes a single, optional argument 'atom', which can be either an
+                                      atom label or an index (zero-based) to specify which species or individual atom
+                                      to output the temperature of. If not specified, all atoms are used and averaged.""",
+                      'func': self.get_temp },
+      "density": {    "dimension": "density",
+                      "help": "The mass density of the physical system.",
+                      'func': (lambda: self.beads.m.sum()/self.cell.V)},
+      "volume": {     "dimension": "volume",
+                      "help": "The volume of the cell box.",
+                      'func': (lambda: self.cell.V) },
+      "cell_h": {    "dimension" : "length",
+                      "help": "The simulation cell as a matrix. Returns the 6 non-zero components in the form [xx, yy, zz, xy, xz, yz].",
+                      "size": 6,
+                      "func": (lambda: self.tensor2vec(self.cell.h))},
+      "cell_abcABC": {"dimension" : "undefined",
+                      "help": "The lengths of the cell vectors and the angles between them in degrees as a list of the form [a, b, c, A, B, C]",
+                      "longhelp": """The lengths of the cell vectors and the angles between them in degrees as a list of the
+                      form [a, b, c, A, B, C], where A is the angle between the sides of length b and c in degrees, and B and C
+                      are defined similarly. Since the output mixes different units, a, b and c can only be output in bohr.""",
+                      "size": 6,
+                      'func': (lambda: np.asarray(h2abc_deg(self.cell.h)))},
+      "conserved": {  "dimension": "energy",
+                      "help": "The value of the conserved energy quantity per bead.",
+                      'func': (lambda: self.ensemble.econs/float(self.beads.nbeads))},
+      "potential": {  "dimension" : "energy",
+                      "help": "The physical system potential energy.",
+                      'func': (lambda: self.forces.pot/self.beads.nbeads)},
+      "spring": {     "dimension" : "energy",
+                      "help": "The total spring potential energy between the beads of all the ring polymers in the system.",
+                      'func': (lambda: self.beads.vpath*self.nm.omegan2/self.beads.nbeads)},
+      "kinetic_md":  {"dimension" : "energy",
+                      "help": "The kinetic energy of the (extended) classical system.",
+                       "longhelp" : """The kinetic energy of the (extended) classical system. Takes an argument 'atom',
+                       which can be either an atom label or index (zero based) to specify which species to find the
+                       kinetic energy of. If not specified, all atoms are used.""",
+                      'func': self.get_kinmd},
+      "kinetic_cv":  {"dimension" : "energy",
+                      "help": "The centroid-virial quantum kinetic energy of the physical system.",
+                      "longhelp": """The centroid-virial quantum kinetic energy of the physical system.
+                      Takes an argument 'atom', which can be either an atom label or index (zero based)
+                      to specify which species to find the kinetic energy of. If not specified, all atoms are used.""",
+                      'func': self.get_kincv},
+      "kinetic_tens":{"dimension" : "energy",
+                      "help" : "The centroid-virial quantum kinetic energy tensor of the physical system.",
+                      "longhelp" : """The centroid-virial quantum kinetic energy tensor of the physical system.
+                      Returns the 6 independent components in the form [xx, yy, zz, xy, xz, yz]. Takes an
+                      argument 'atom', which can be either an atom label or index (zero based) to specify
+                      which species to find the kinetic tensor components of. If not specified, all atoms are used.""",
+                      "size" : 6,
+                      "func" : self.get_ktens},
+      "kinetic_ij":  {"dimension" : "energy",
+                      "help" : "The centroid-virial off-diagonal quantum kinetic energy tensor of the physical system.",
+                      "longhelp" : """The centroid-virial off-diagonal quantum kinetic energy tensor of the physical system.
+                      This computes the cross terms between atoms i and atom j, whose average is  <p_i*p_j/(2*sqrt(m_i*m_j))>.
+                      Returns the 6 independent components in the form [xx, yy, zz, xy, xz, yz]. Takes arguments 'i' and 'j',
+                       which give the indices of the two desired atoms.""",
+                      "size" : 6,
+                      "func" : self.get_kij},
+      "r_gyration": { "dimension" : "length",
+                      "help" : "The average radius of gyration of the selected ring polymers.",
+                      "longhelp" : """The average radius of gyration of the selected ring polymers. Takes an
+                      argument 'atom', which can be either an atom label or index (zero based) to specify which
+                      species to find the radius of gyration of. If not specified, all atoms are used and averaged.""",
+                      "func": self.get_rg},
+      "atom_x": {     "dimension" : "length",
+                      "help": "The position (x,y,z) of a particle given its index.",
+                      "longhelp" : """The position (x,y,z) of a particle given its index. Takes arguments index
+                       and bead (both zero based). If bead is not specified, refers to the centroid.""",
+                      "size" : 3,
+                      "func" : (lambda atom="", bead="-1": self.get_atom_vec(self.beads.q, atom=atom, bead=bead))},
+      "atom_v": {     "dimension" : "velocity",
+                      "help": "The velocity (x,y,z) of a particle given its index.",
+                       "longhelp": """The velocity (x,y,z) of a particle given its index. Takes arguments index
+                       and bead (both zero based). If bead is not specified, refers to the centroid.""",
+                      "size" : 3,
+                      "func" : (lambda atom="", bead="-1": self.get_atom_vec(self.beads.p/self.beads.m3, atom=atom, bead=bead))},
+      "atom_p": {     "dimension" : "momentum",
+                      "help": "The momentum (x,y,z) of a particle given its index.",
+                      "longhelp": """The momentum (x,y,z) of a particle given its index. Takes arguments index
+                      and bead (both zero based). If bead is not specified, refers to the centroid.""",
+                      "size" : 3,
+                      "func" : (lambda atom="", bead="-1": self.get_atom_vec(self.beads.p, atom=atom, bead=bead))},
+      "atom_f": {     "dimension" : "force",
+                      "help": "The force (x,y,z) acting on a particle given its index.",
+                      "longhelp": """The force (x,y,z) acting on a particle given its index. Takes arguments index
+                      and bead (both zero based). If bead is not specified, refers to the centroid.""",
+                      "size" : 3,
+                      "func" : (lambda atom="", bead="-1": self.get_atom_vec(self.forces.f, atom=atom, bead=bead))},
+      "stress_md": {  "dimension": "pressure",
+                      "size" : 6,
+                      "help": "The total stress tensor of the (extended) classical system.",
+                      "longhelp": """The total stress tensor of the (extended) classical system. Returns the 6
+                      independent components in the form [xx, yy, zz, xy, xz, yz].""",
+                      "func": (lambda: self.tensor2vec((self.forces.vir + self.nm.kstress)/self.cell.V))},
+      "pressure_md": {"dimension": "pressure",
+                      "help": "The pressure of the (extended) classical system.",
+                      "func": (lambda: np.trace((self.forces.vir + self.nm.kstress)/(3.0*self.cell.V)))},
+      "kstress_md":  {"dimension": "pressure",
+                      "size" : 6,
+                      "help": "The kinetic stress tensor of the (extended) classical system.",
+                      "longhelp": """The kinetic stress tensor of the (extended) classical system. Returns the 6
+                      independent components in the form [xx, yy, zz, xy, xz, yz].""",
+                      "func": (lambda: self.tensor2vec(self.nm.kstress/self.cell.V))},
+      "virial_md": {  "dimension": "pressure",
+                      "size" : 6,
+                      "help": "The virial tensor of the (extended) classical system.",
+                      "longhelp": """The virial tensor of the (extended) classical system. Returns the 6
+                      independent components in the form [xx, yy, zz, xy, xz, yz].""",
+                      "func": (lambda: self.tensor2vec(self.forces.vir/self.cell.V))},
+      "stress_cv": {  "dimension": "pressure",
+                      "size" : 6,
+                      "help": "The total quantum estimator for the stress tensor of the physical system.",
+                      "longhelp": """The total quantum estimator for the stress tensor of the physical system. Returns the
+                      6 independent components in the form [xx, yy, zz, xy, xz, yz].""",
+                      "func": (lambda: self.tensor2vec(self.forces.vir + self.kstress_cv())/(self.cell.V*self.beads.nbeads))},
+      "pressure_cv": {"dimension": "pressure",
+                      "help": "The quantum estimator for pressure of the physical system.",
+                      "func": (lambda: np.trace(self.forces.vir + self.kstress_cv())/(3.0*self.cell.V*self.beads.nbeads))},
+      "kstress_cv":  {"dimension": "pressure",
+                      "size" : 6,
+                      "help": "The quantum estimator for the kinetic stress tensor of the physical system.",
+                      "longhelp": """The quantum estimator for the kinetic stress tensor of the physical system.
+                      Returns the 6 independent components in the form [xx, yy, zz, xy, xz, yz].""",
+                      "func": (lambda: self.tensor2vec(self.kstress_cv()/(self.cell.V*self.beads.nbeads)))},
+      "virial_cv": {  "dimension": "pressure",
+                      "size" : 6,
+                      "help": "The quantum estimator for the virial stress tensor of the physical system.",
+                      "longhelp": """The quantum estimator for the virial stress tensor of the physical system.
+                      Returns the 6 independent components in the form [xx, yy, zz, xy, xz, yz].""",
+                      "func": (lambda: self.tensor2vec(self.forces.vir/(self.cell.V*self.beads.nbeads)))},
+      "displacedpath": {  "dimension": "undefined",
+                      "help": "The displaced path end-to-end distribution estimator",
+                      "longhelp": """This is the estimator for the end-to-end distribution, that can be used to calculate the
+                      particle momentum distribution as described in in L. Lin, J. A. Morrone, R. Car and M. Parrinello,
+                      105, 110602 (2010), Phys. Rev. Lett. Takes arguments 'ux', 'uy' and 'uz', which are the components of
+                      the path opening vector. Also takes an argument 'atom', which can be either an atom label or index
+                      (zero based) to specify which species to find the end-to-end distribution estimator for. If not
+                      specified, all atoms are used. Note that one atom is computed at a time, and that each path opening
+                      operation costs as much as a PIMD step. Returns the average over the selected atoms of the estimator of
+                      exp(-U(u)) for each frame.""",
+                      "func": self.get_linlin},
+      "scaledcoords": {   "dimension": "undefined",
+                      "help" : "The scaled coordinates estimators that can be used to compute energy and heat capacity",
+                       "longhelp": """Returns the estimators that are required to evaluate the scaled-coordinates estimators
+                       for total energy and heat capacity, as described in T. M. Yamamoto,
+                       J. Chem. Phys., 104101, 123 (2005). Returns eps_v and eps_v', as defined in that paper.
+                       As the two estimators have a different dimensions, this can only be output in atomic units.
+                       Takes one argument, 'fd_delta', which gives the value of the finite difference parameter used -
+                       which defaults to """+ str(-self._DEFAULT_FINDIFF) + """. If the value of 'fd_delta' is negative,
+                       then its magnitude will be reduced automatically by the code if the finite difference error
+                       becomes too large.""",
+                      'func': self.get_yama_estimators,
+                      "size": 2},
+      "isotope_scfep":  {"dimension": "undefined",
+                      "size": 7,
+                      'func': self.get_isotope_yama,
+                      "help": "The scaled-coordinates free energy perturbation scaled mass KE estimator.",
+                      "longhelp" : """Returns the (many) terms needed to compute the scaled-coordinates free energy
+                      perturbation scaled mass KE estimator (M. Ceriotti, T. Markland, J. Chem. Phys. 138, 014112 (2013)).
+                      Takes two arguments, 'alpha' and 'atom', which give the
+                      scaled mass parameter and the atom of interest respectively, and default to '1.0' and ''. The
+                      'atom' argument can either be the label of a particular kind of atom, or an index (zero based)
+                      of a specific atom. This property computes, for each atom in the selection, an estimator for
+                      the kinetic energy it would have had if it had the mass scaled by alpha. The 7 numbers output
+                      are the average over the selected atoms of the log of the weights <h>, the average of the
+                      squares <h**2>, the average of the un-weighted scaled-coordinates kinetic energies  <T_CV>
+                      and of the squares <T_CV**2>, the log sum of the weights LW=ln(sum(e**(-h))), the sum of the
+                      re-weighted kinetic energies, stored as a log modulus and sign, LTW=ln(abs(sum(T_CV e**(-h))))
+                      STW=sign(sum(T_CV e**(-h))). In practice, the best estimate of the estimator can be computed
+                      as [sum_i exp(LTW_i)*STW_i]/[sum_i exp(LW_i)]. The other terms can be used to compute diagnostics
+                      for the statistical accuracy of the re-weighting process. Note that evaluating this estimator costs
+                      as much as a PIMD step for each atom in the list. The elements that are output have different
+                      units, so the output can be only in atomic units.""" },
+      "isotope_tdfep":  {"dimension" : "undefined",
+                          "size" : 7,
+                          'func': self.get_isotope_thermo,
+                          "help": "The thermodynamic free energy perturbation scaled mass KE estimator.",
+                          "longhelp" : """Returns the (many) terms needed to compute the thermodynamic free energy
+                      perturbation scaled mass KE estimator (M. Ceriotti, T. Markland, J. Chem. Phys. 138, 014112 (2013)).
+                      Takes two arguments, 'alpha' and 'atom', which give the
+                      scaled mass parameter and the atom of interest respectively, and default to '1.0' and ''. The
+                      'atom' argument can either be the label of a particular kind of atom, or an index (zero based)
+                      of a specific atom. This property computes, for each atom in the selection, an estimator for
+                      the kinetic energy it would have had if it had the mass scaled by alpha. The 7 numbers output
+                      are the average over the selected atoms of the log of the weights <h>, the average of the
+                      squares <h**2>, the average of the un-weighted scaled-coordinates kinetic energies  <T_CV>
+                      and of the squares <T_CV**2>, the log sum of the weights LW=ln(sum(e**(-h))), the sum of the
+                      re-weighted kinetic energies, stored as a log modulus and sign, LTW=ln(abs(sum(T_CV e**(-h))))
+                      STW=sign(sum(T_CV e**(-h))). In practice, the best estimate of the estimator can be computed
+                      as [sum_i exp(LTW_i)*STW_i]/[sum_i exp(LW_i)]. The other terms can be used to compute diagnostics
+                      for the statistical accuracy of the re-weighting process. Evaluating this estimator is inexpensive,
+                      but typically the statistical accuracy is worse than with the scaled coordinates estimator.
+                      The elements that are output have different
+                      units, so the output can be only in atomic units.""" }
+      }
+
+   def bind(self, simul):
+      """Binds the necessary objects from the simulation to calculate the
+      required properties.
+
+      Args:
+         simul: The Simulation object to be bound.
+      """
+
+      self.ensemble = simul.ensemble
+      self.beads = simul.beads
+      self.nm = simul.nm
+      self.cell = simul.cell
+      self.forces = simul.forces
+      self.simul = simul
+      # dummy beads and forcefield objects so that we can use scaled and
+      # displaced path estimators without changing the simulation bead
+      # coordinates
+      self.dbeads = simul.beads.copy()
+      self.dforces = Forces()
+      self.dforces.bind(self.dbeads, self.simul.cell,  self.simul.flist)
+
+   def __getitem__(self, key):
+      """Retrieves the item given by key.
+
+      Note that if the key contains a string (arg1; arg2; ... )
+      then it will pass the appropriate positional arguments to the
+      calculation function of the property. Note the brackets and
+      the semi-colon separators. If instead we have the syntax
+      (arg1=val1;arg2; ... ), then the keyword/value pair (arg1,val1)
+      will be added to the keyword argument list. The appropriate key word
+      arguments will then be passed to the calculation function instead.
+
+      Similarly, if the key contains a string {unit}, then it will take
+      the string 'unit' and use it to define the units that the property
+      is output in.
+
+      Args:
+         key: A string contained in property_dict.
+
+      Returns:
+         The property labelled by the keyword key, along with its unit
+         keyword, and the argument lists for the function used to calculate
+         the property specified by the keyword key.
+      """
+
+      (key, unit, arglist, kwarglist) = getall(key)
+      pkey = self.property_dict[key]
+
+      #pkey["func"](*arglist,**kwarglist) gives the value of the property
+      #in atomic units. unit_to_user() returns the value in the user
+      #specified units.
+      if "dimension" in pkey and unit != "":
+         return unit_to_user(pkey["dimension"], unit, pkey["func"](*arglist,**kwarglist))
+      else:
+         return pkey["func"](*arglist,**kwarglist)
+
+   def tensor2vec(self, tensor):
+      """Takes a 3*3 symmetric tensor and returns it as a 1D array,
+      containing the elements [xx, yy, zz, xy, xz, yz].
+      """
+
+      return np.array([tensor[0,0], tensor[1,1], tensor[2,2], tensor[0,1], tensor[0,2], tensor[1,2]])
+
+   def get_atom_vec(self, prop_vec, atom="", bead="-1"):
+      """Gives a vector for one atom.
+
+      Args:
+         prop_vec: An array from which to take the atomic vector from.
+         atom: The index of the atom for which the vector will
+            be output.
+         bead: The index of the replica of the atom for which the
+            vector will be output. If less than 0, then the centroid is used.
+      """
+
+      if atom == "":
+         raise IndexError("Must specify the index for atom_vec property")
+      atom = int(atom)
+      bead = int(bead)
+      if atom >= self.beads.natoms:
+         raise IndexError("Cannot output atom_vec property as atom index %d is larger than the number of atoms" % atom)
+      if bead >= self.beads.nbeads:
+         raise IndexError("Cannot output atom_vec property as bead index %d is larger than the number of beads" % bead)
+
+      if bead < 0:
+         atom_vec = np.zeros(3)
+         for b in range(self.beads.nbeads):
+            atom_vec += prop_vec[b,3*atom:3*(atom+1)]
+         return atom_vec/float(self.beads.nbeads)
+      else:
+         return prop_vec[bead,3*atom:3*(atom+1)]
+
+   def get_temp(self, atom=""):
+      """Calculates the MD kinetic temperature.
+
+      Note that in the case that the centre of mass constraint there will be
+      3 fewer degrees of freedom than without, so this has to be taken into
+      account when calculating the kinetic temperature.
+
+      Args:
+         atom: If given, specifies the atom to give the temperature
+            for. If not, then the simulation temperature.
+      """
+
+      if self.ensemble.fixcom:
+         mdof = 3
+      else:
+         mdof = 0
+
+      if atom == "":
+         # use the KE computed in the NM representation in order to avoid problems when mass scaling is used
+         kedof = self.get_kinmd()/(3*self.beads.natoms*self.beads.nbeads - mdof)
+      else:
+         try:
+            #iatom gives the index of the atom to be studied
+            iatom = int(atom)
+            latom = ""
+            if iatom >= self.beads.natoms:
+               raise IndexError("Cannot output temperature as atom index %d is larger than the number of atoms" % iatom)
+         except ValueError:
+            #here 'atom' is a label rather than an index which is stored in latom
+            iatom = -1
+            latom = atom
+
+         ncount = 0
+         for i in range(self.beads.natoms):
+            if (iatom == i or latom == self.beads.names[i]):
+               ncount += 1
+
+         if ncount == 0:
+            raise IndexError("Couldn't find an atom which matched the argument of temperature")
+         # "spreads" the COM removal correction evenly over all the atoms...
+         kedof = self.get_kinmd(atom)/ncount*(self.beads.natoms/(3.0*self.beads.natoms*self.beads.nbeads - mdof))
+
+      return kedof/(0.5*Constants.kb)
+
+   def get_kincv(self, atom=""):
+      """Calculates the quantum centroid virial kinetic energy estimator.
+
+      Args:
+         atom: If given, specifies the atom to give the kinetic energy
+            for. If not, the system kinetic energy is given.
+      """
+
+      try:
+         #iatom gives the index of the atom to be studied
+         iatom = int(atom)
+         latom = ""
+         if iatom >= self.beads.natoms:
+            raise IndexError("Cannot output kinetic energy as atom index %d is larger than the number of atoms" % iatom)
+      except ValueError:
+         #here 'atom' is a label rather than an index which is stored in latom
+         iatom = -1
+         latom = atom
+
+      q = depstrip(self.beads.q)
+      qc = depstrip(self.beads.qc)
+      f = depstrip(self.forces.f)
+
+      acv = 0.0
+      ncount = 0
+      for i in range(self.beads.natoms):
+         if (atom != "" and iatom != i and latom != self.beads.names[i]):
+            continue
+
+         kcv = 0.0
+         k = 3*i
+         for b in range(self.beads.nbeads):
+            kcv += (q[b,k] - qc[k])* f[b,k] + (q[b,k+1] - qc[k+1])* f[b,k+1] + (q[b,k+2] - qc[k+2])* f[b,k+2]
+         kcv *= -0.5/self.beads.nbeads
+         kcv += 1.5*Constants.kb*self.ensemble.temp
+         acv += kcv
+         ncount += 1
+
+      if ncount == 0:
+         warning("Couldn't find an atom which matched the argument of kinetic energy, setting to zero.", verbosity.medium)
+
+      return acv
+
+   def get_kinmd(self, atom=""):
+      """Calculates the classical kinetic energy of the simulation (p^2/2m)
+
+      Args:
+         atom: If given, specifies the atom to give the kinetic energy
+            for. If not, the simulation kinetic energy is given.
+      """
+
+      if atom == "":
+         return self.nm.kin/self.beads.nbeads
+      else:
+         try:
+            #iatom gives the index of the atom to be studied
+            iatom = int(atom)
+            latom = ""
+            if iatom >= self.beads.natoms:
+               raise IndexError("Cannot output kinetic energy as atom index %d is larger than the number of atoms" % iatom)
+         except ValueError:
+            #here 'atom' is a label rather than an index which is stored in latom
+            iatom = -1
+            latom = atom
+
+         pnm = depstrip(self.nm.pnm)
+         dm3 = depstrip(self.nm.dynm3)
+         kmd = 0.0
+         ncount = 0
+         for i in range(self.beads.natoms):
+            if (atom != "" and iatom != i and latom != self.beads.names[i]):
+               continue
+            k = 3*i
+            for b in range(self.beads.nbeads):
+               kmd += (pnm[b,k]**2 + pnm[b,k+1]**2 + pnm[b,k+2]**2)/(2.0*dm3[b,k])
+            ncount += 1
+
+         if ncount == 0:
+            warning("Couldn't find an atom which matched the argument of kinetic energy, setting to zero.", verbosity.medium)
+
+         return kmd/self.beads.nbeads
+
+   def get_ktens(self, atom=""):
+      """Calculates the quantum centroid virial kinetic energy
+      TENSOR estimator.
+
+      Args:
+         atom: The index of the atom for which the kinetic energy tensor
+            is to be output, or the index of the type of atoms for which
+            it should be output.
+      """
+
+      try:
+         #iatom gives the index of the atom to be studied
+         iatom = int(atom)
+         latom = ""
+         if iatom >= self.beads.natoms:
+            raise IndexError("Cannot output kinetic tensor as atom index %d is larger than the number of atoms" % iatom)
+      except ValueError:
+         #here 'atom' is a label rather than an index which is stored in latom
+         iatom = -1
+         latom = atom
+
+      tkcv = np.zeros((6),float)
+      ncount = 0
+      for i in range(self.beads.natoms):
+         if (atom != "" and iatom != i and latom != self.beads.names[i]):
+            continue
+
+         tkcv += self.get_kij(str(i), str(i))
+         ncount += 1
+
+      if ncount == 0:
+         warning("Couldn't find an atom which matched the argument of kinetic tensor, setting to zero.", verbosity.medium)
+
+      return tkcv
+
+   def get_kij(self, ni="0", nj="0"):
+      """Calculates the quantum centroid virial kinetic energy
+      TENSOR estimator for two possibly different atom indices.
+
+      Args:
+         ni: The index of atom i.
+         nj: The index of atom j.
+
+      Returns:
+         The contribution to the kinetic energy tensor estimator from
+         the interactions between atom i and atom j.
+      """
+
+      i = int(ni)
+      j = int(nj)
+      if i >= self.beads.natoms:
+         raise IndexError("Cannot output kinetic_ij as atom index %d is larger than the number of atoms" % i)
+      if j >= self.beads.natoms:
+         raise IndexError("Cannot output kinetic_ij as atom index %d is larger than the number of atoms" % j)
+      mi = self.beads.m[i]
+      mj = self.beads.m[j]
+      ai = 3*i
+      aj = 3*j
+
+      q = depstrip(self.beads.q)
+      qc = depstrip(self.beads.qc)
+      f = depstrip(self.forces.f)
+
+      # I implement this for the most general case. In practice T_ij = <p_i p_j>/(2sqrt(m_i m_j))
+      kcv = np.zeros((6),float)
+      for b in range(self.beads.nbeads):
+         kcv[0] += mi*(q[b,ai] - qc[ai])    *f[b,aj]   + mj*(q[b,aj] - qc[aj])    *f[b,ai]       #Txx
+         kcv[1] += mi*(q[b,ai+1] - qc[ai+1])*f[b,aj+1] + mj*(q[b,aj+1] - qc[aj+1])*f[b,ai+1]     #Tyy
+         kcv[2] += mi*(q[b,ai+2] - qc[ai+2])*f[b,aj+2] + mj*(q[b,aj+2] - qc[aj+2])*f[b,ai+2]     #Tzz
+         kcv[3] += mi*(q[b,ai] - qc[ai])*    f[b,aj+1] + mj*(q[b,aj+1] - qc[aj+1])*f[b,ai]       #Txy
+         kcv[4] += mi*(q[b,ai] - qc[ai])*    f[b,aj+2] + mj*(q[b,aj+2] - qc[aj+2])*f[b,ai]       #Txz
+         kcv[5] += mi*(q[b,ai+1] - qc[ai+1])*f[b,aj+2] + mj*(q[b,aj+2] - qc[aj+2])*f[b,ai+1]     #Tyz
+
+      kcv *= -0.5/(self.beads.nbeads*2*np.sqrt(mi*mj))
+      if i == j:
+         kcv[0:3] += 0.5*Constants.kb*self.ensemble.temp
+
+      return kcv
+
+   def get_rg(self, atom=""):
+      """Calculates the radius of gyration of the ring polymers.
+
+      Args:
+         atom: If given, specifies the atom to give the gyration radius
+            for. If not, the system average gyration radius is given.
+      """
+
+      try:
+         #iatom gives the index of the atom to be studied
+         iatom = int(atom)
+         latom = ""
+         if iatom >= self.beads.natoms:
+            raise IndexError("Cannot output gyration radius as atom index %d is larger than the number of atoms" % iatom)
+      except ValueError:
+         #here 'atom' is a label rather than an index which is stored in latom
+         iatom = -1
+         latom = atom
+
+      q = depstrip(self.beads.q)
+      qc = depstrip(self.beads.qc)
+      nat = self.beads.natoms
+      nb = self.beads.nbeads
+      rg_tot = 0.0
+      ncount = 0
+      for i in range(nat):
+         if (atom != "" and iatom != i and latom != self.beads.names[i]):
+            continue
+
+         rg_at = 0.0
+         for j in range(nb):
+            dq = q[j,3*i:3*(i+1)] - qc[3*i:3*(i+1)]
+            rg_at += np.dot(dq, dq)
+         ncount += 1
+         rg_tot += np.sqrt(rg_at/float(nb))
+
+      if ncount == 0:
+         raise IndexError("Couldn't find an atom which matched the argument of r_gyration")
+
+      return rg_tot/float(ncount)
+
+   def kstress_cv(self):
+      """Calculates the quantum centroid virial kinetic stress tensor
+      estimator.
+
+      Note that this is not divided by the volume or the number of beads.
+
+      Returns:
+         A 3*3 tensor with all the components of the tensor.
+      """
+
+      kst = np.zeros((3,3),float)
+      q = depstrip(self.beads.q)
+      qc = depstrip(self.beads.qc)
+      pc = depstrip(self.beads.pc)
+      m = depstrip(self.beads.m)
+      fall = depstrip(self.forces.f)
+      na3 = 3*self.beads.natoms
+
+      for b in range(self.beads.nbeads):
+         for i in range(3):
+            for j in range(i,3):
+               kst[i,j] -= np.dot(q[b,i:na3:3] - qc[i:na3:3],
+                  fall[b,j:na3:3])
+
+      # return the CV estimator MULTIPLIED BY NBEADS -- again for consistency with the virial, kstress_MD, etc...
+      for i in range(3):
+         kst[i,i] += self.beads.nbeads * ( np.dot(pc[i:na3:3],pc[i:na3:3]/m) )
+
+      return kst
+
+   def opening(self, bead):
+      """Path opening function, used in linlin momentum distribution
+      estimator.
+
+      Args:
+         bead: The index of the bead to shift.
+      """
+
+      return bead/float(self.beads.nbeads) + 0.5*(1.0/self.beads.nbeads - 1)
+
+   def get_linlin(self, ux="0", uy="0", uz="0", atom=""):
+      """Calculates the end-to-end distribution for a particular path opening
+      vector.
+
+      Args:
+         ux: The x-component of the path opening vector.
+         uy: The y-component of the path opening vector.
+         uz: The z-component of the path opening vector.
+         atom: If given, specifies the atom to give the kinetic energy
+            for. If not, the simulation kinetic energy is given.
+      """
+
+      try:
+         #iatom gives the index of the atom to be studied
+         iatom = int(atom)
+         latom = ""
+         if iatom >= self.beads.natoms:
+            raise IndexError("Cannot output linlin estimator as atom index %d is larger than the number of atoms" % iatom)
+      except ValueError:
+         #here 'atom' is a label rather than an index which is stored in latom
+         iatom = -1
+         latom = atom
+
+      beta = 1.0/(self.ensemble.temp*Constants.kb)
+
+      u = np.array([float(ux), float(uy), float(uz)])
+      u_size = np.dot(u,u)
+      q = depstrip(self.beads.q)
+      nat = self.beads.natoms
+      nb = self.beads.nbeads
+      nx_tot = 0.0
+      ncount = 0
+      for i in range(nat):
+         if (atom != "" and iatom != i and latom != self.beads.names[i]):
+            continue
+
+         mass = self.beads.m[i]
+         self.dbeads.q[:] = q
+         for b in range(nb):
+            self.dbeads.q[b,3*i:3*(i+1)] += self.opening(b)*u
+         dV = self.dforces.pot - self.forces.pot
+
+         n0 = np.exp(-mass*u_size/(2.0*beta*Constants.hbar**2))
+         nx_tot += n0*np.exp(-dV*beta/float(self.beads.nbeads))
+         ncount += 1
+
+      if ncount == 0:
+         raise IndexError("Couldn't find an atom which matched the argument of linlin")
+
+      return nx_tot/float(ncount)
+
+   def get_yama_estimators(self, fd_delta= - _DEFAULT_FINDIFF):
+      """Calculates the quantum scaled coordinate kinetic energy estimator.
+
+      Uses a finite difference method to calculate the estimators
+      needed to calculate the energy and heat capacity of the system, as
+      shown in Takeshi M. Yamamoto, Journal of Chemical Physics,
+      104101, 123 (2005). Returns both eps_v and eps_v' as defined in
+      the above article. Note that heat capacity is calculated as
+      beta**2*kboltzmann*(<eps_v**2> - <eps_v>**2 - <eps_v'>), and the
+      energy of the system as <eps_v>.
+
+      Args:
+         fd_delta: the relative finite difference in temperature to apply in
+         computing finite-difference quantities. If it is negative, will be
+         scaled down automatically to avoid discontinuities in the potential.
+      """
+
+      dbeta = abs(float(fd_delta))
+      beta = 1.0/(Constants.kb*self.ensemble.temp)
+
+      qc = depstrip(self.beads.centroid.q)
+      q = depstrip(self.beads.q)
+      v0 = self.forces.pot/self.beads.nbeads
+      while True:
+         splus = np.sqrt(1.0 + dbeta)
+         sminus = np.sqrt(1.0 - dbeta)
+
+         for b in range(self.beads.nbeads):
+            self.dbeads[b].q = qc*(1.0 - splus) + splus*q[b,:]
+         vplus = self.dforces.pot/self.beads.nbeads
+
+         for b in range(self.beads.nbeads):
+            self.dbeads[b].q = qc*(1.0 - sminus) + sminus*q[b,:]
+         vminus = self.dforces.pot/self.beads.nbeads
+
+         if (fd_delta < 0 and abs((vplus + vminus)/(v0*2) - 1.0) > self._DEFAULT_FDERROR and dbeta > self._DEFAULT_MINFID):
+            dbeta *= 0.5
+            info("Reducing displacement in Yamamoto kinetic estimator", verbosity.low)
+            continue
+         else:
+            eps = ((1.0 + dbeta)*vplus - (1.0 - dbeta)*vminus)/(2*dbeta)
+            eps += 0.5*(3*self.beads.natoms)/beta
+
+            eps_prime = ((1.0 + dbeta)*vplus + (1.0 - dbeta)*vminus - 2*v0)/(dbeta**2*beta)
+            eps_prime -= 0.5*(3*self.beads.natoms)/beta**2
+
+            break
+
+      return np.asarray([eps, eps_prime])
+
+   def get_isotope_yama(self, alpha="1.0", atom=""):
+      """Gives the components of the yamamoto scaled-mass KE estimator
+      for a given atom index.
+
+      Args:
+         alpha: m'/m the mass ratio
+         atom: the index of the atom to compute the isotope fractionation
+            pair for, or a label
+
+      Returns:
+         a tuple from which one can reconstruct all that is needed to
+         compute the SMKEE, and its statistical accuracy:
+         (sum_deltah, sum_ke, log(sum(weights)), log(sum(weight*ke)),
+            sign(sum(weight*ke)) )
+      """
+
+      try:
+         #iatom gives the index of the atom to be studied
+         iatom = int(atom)
+         latom = ""
+         if iatom >= self.beads.natoms:
+            raise IndexError("Cannot output scaled-mass kinetic energy estimator as atom index %d is larger than the number of atoms" % iatom)
+      except ValueError:
+         #here 'atom' is a label rather than an index which is stored in latom
+         iatom = -1
+         latom = atom
+
+      alpha = float(alpha)
+
+      atcv = 0.0
+      atcv2 = 0.0
+      alogr = 0.0
+      alogr2 = 0.0
+      law = 0.0
+      lawke = 0.0
+      sawke = 1.0
+      ni = 0
+
+      # strips dependency control since we are not gonna change the true beads in what follows
+      q = depstrip(self.beads.q)
+      f = depstrip(self.forces.f)
+      qc = depstrip(self.beads.qc)
+
+      for i in range(self.beads.natoms):
+         # selects only the atoms we care about
+         if (atom != "" and iatom != i and latom != self.beads.names[i]):
+            continue
+
+         ni += 1
+
+         # arranges coordinate-scaled beads in a auxiliary beads object
+         self.dbeads.q[:] = q[:]
+         for b in range(self.beads.nbeads):
+            self.dbeads.q[b,3*i:3*(i+1)] = ( qc[3*i:3*(i+1)]+
+                        np.sqrt(1.0/alpha)*(q[b,3*i:3*(i+1)]-qc[3*i:3*(i+1)])  )
+
+         tcv = 0.0
+         for b in range(self.beads.nbeads):
+            tcv += np.dot( (self.dbeads.q[b,3*i:3*(i+1)]-self.dbeads.qc[3*i:3*(i+1)]),
+                          self.dforces.f[b,3*i:3*(i+1)] )
+         tcv *= -0.5/self.beads.nbeads
+         tcv += 1.5*Constants.kb*self.simul.ensemble.temp
+
+         logr = (self.dforces.pot-self.forces.pot)/(Constants.kb*self.simul.ensemble.temp*self.beads.nbeads)
+
+         atcv += tcv
+         atcv2 += tcv*tcv
+
+         alogr += logr
+         alogr2 += logr*logr;
+
+         #accumulates log averages in a way which preserves accuracy
+         if (ni == 1):
+            law = -logr
+         else:
+            (law, drop) = logsumlog( (law,1.0), (-logr,1.0))
+
+         #here we need to take care of the sign of tcv, which might as well be
+         #negative... almost never but...
+         if (ni == 1):
+            lawke = -logr + np.log(abs(tcv))
+            sawke = np.sign(tcv);
+         else:
+            (lawke, sawke) = logsumlog( (lawke, sawke), (-logr+np.log(abs(tcv)), np.sign(tcv)) )
+
+      if ni == 0:
+         raise IndexError("Couldn't find an atom which matched the argument of isotope_y")
+
+      return np.asarray([alogr/ni, alogr2/ni, atcv/ni, atcv2/ni, law, lawke, sawke])
+
+   def get_isotope_thermo(self, alpha="1.0", atom=""):
+      """Gives the components of the thermodynamic scaled-mass KE
+      estimator for a given atom index.
+
+      Args:
+         alpha: m'/m the mass ratio
+         atom: the index of the atom to compute the isotope fractionation
+            pair for, or a label
+
+      Returns:
+         a tuple from which one can reconstruct all that is needed to
+         compute the SMKEE:
+         (sum_deltah, sum_ke, log(sum(weights)), log(sum(weight*ke)),
+            sign(sum(weight*ke)) )
+      """
+
+      try:
+         #iatom gives the index of the atom to be studied
+         iatom = int(atom)
+         latom = ""
+         if iatom >= self.beads.natoms:
+            raise IndexError("Cannot output scaled-mass kinetic energy estimator as atom index %d is larger than the number of atoms" % iatom)
+      except ValueError:
+         #here 'atom' is a label rather than an index which is stored in latom
+         iatom = -1
+         latom = atom
+
+      alpha = float(alpha)
+
+      atcv = 0.0
+      alogr = 0.0
+      atcv2 = 0.0
+      alogr2 = 0.0
+      law = 0.0
+      lawke = 0.0
+      sawke = 1.0
+      ni = 0
+
+      # strips dependency control since we are not gonna change the true beads in what follows
+      q = depstrip(self.beads.q)
+      f = depstrip(self.forces.f)
+      qc = depstrip(self.beads.qc)
+
+      for i in range(self.beads.natoms):
+         # selects only the atoms we care about
+         if (atom != "" and iatom != i and latom != self.beads.names[i]):
+            continue
+
+         ni += 1
+
+         spr = 0.0
+         for b in range(1,self.beads.nbeads):
+            for j in range(3*i,3*(i+1)):
+               spr += (q[b,j]-q[b-1,j])**2
+         for j in range(3*i,3*(i+1)):
+            spr += (q[self.beads.nbeads-1,j]-q[0,j])**2
+
+         spr *= 0.5*self.beads.m[i]*self.nm.omegan2
+
+         # centroid virial contribution from atom i
+         tcv = 0.0
+         for b in range(self.beads.nbeads):
+            tcv += np.dot( (q[b,3*i:3*(i+1)]-qc[3*i:3*(i+1)]), f[b,3*i:3*(i+1)])
+         tcv *= -0.5/self.beads.nbeads
+         tcv += 1.5*Constants.kb*self.simul.ensemble.temp
+
+         logr = (alpha-1)*spr/(Constants.kb*self.simul.ensemble.temp*self.beads.nbeads)
+
+         atcv += tcv
+         atcv2 += tcv*tcv
+         alogr += logr
+         alogr2 += logr*logr
+
+         #accumulates log averages in a way which preserves accuracy
+         if (ni == 1):
+            law = -logr
+         else:
+            (law, drop) = logsumlog( (law,1.0), (-logr,1.0))
+
+         #here we need to take care of the sign of tcv, which might as well be
+         #negative... almost never but...
+         if (ni == 1):
+            lawke = -logr + np.log(abs(tcv))
+            sawke = np.sign(tcv)
+         else:
+            (lawke, sawke) = logsumlog( (lawke, sawke), (-logr+np.log(abs(tcv)), np.sign(tcv)) )
+
+      if ni == 0:
+         raise IndexError("Couldn't find an atom which matched the argument of isotope_y")
+
+      return np.asarray([alogr/ni, alogr2/ni, atcv/ni, atcv2/ni, law, lawke, sawke])
+
+
+class Trajectories(dobject):
+   """A simple class to take care of output of trajectory data.
+
+   Attributes:
+      simul: The simulation object from which the position data will be
+         obtained.
+      fatom: A dummy beads object used so that individual replica trajectories
+         can be output.
+      traj_dict: A dictionary containing all the trajectories that can be
+         output.
+   """
+
+   def __init__(self):
+      """Initialises a Trajectories object."""
+
+      self.traj_dict = {
+      # Note that here we want to return COPIES of the different arrays, so we make sure to make an operation in order not to return a reference.
+      "positions": { "dimension" : "length",
+                     "help": "The atomic coordinate trajectories. Will print out one file per bead, unless the bead attribute is set by the user.",
+                     'func': (lambda : 1.0*self.simul.beads.q)},
+      "velocities": {"dimension" : "velocity",
+                     "help": "The velocity trajectories. Will print out one file per bead, unless the bead attribute is set by the user.",
+                     'func': (lambda : self.simul.beads.p/self.simul.beads.m3)},
+      "momenta": {"dimension" : "momentum",
+                     "help": "The momentum trajectories. Will print out one file per bead, unless the bead attribute is set by the user.",
+                     'func': (lambda : 1.0*self.simul.beads.p)},
+      "forces": {    "dimension" : "force",
+                     "help": "The force trajectories. Will print out one file per bead, unless the bead attribute is set by the user.",
+                     'func': (lambda : 1.0*self.simul.forces.f)},
+      "x_centroid": {"dimension" : "length",
+                     "help": "The centroid coordinates.",
+                     'func': (lambda : 1.0*self.simul.beads.qc)},
+      "v_centroid": {"dimension" : "velocity",
+                     "help": "The centroid velocity.",
+                     'func': (lambda : self.simul.beads.pc/self.simul.beads.m3[0])},
+      "p_centroid": {"dimension" : "momentum",
+                     "help": "The centroid momentum.",
+                     'func': (lambda : 1.0*self.simul.beads.pc)},
+      "f_centroid": {"dimension" : "force",
+                     "help": "The force acting on the centroid.",
+                     'func': (lambda : np.sum(self.simul.forces.f,0)/float(self.simul.beads.nbeads))},
+      "kinetic_cv": {"dimension" : "energy",
+                     "help": "The centroid virial quantum kinetic energy estimator for each atom, resolved into Cartesian components [xx, yy, zz]",
+                     'func': self.get_akcv},
+      "kinetic_od": {"dimension" : "energy",
+                     "help": "The off diagonal elements of the centroid virial quantum kinetic energy tensor [xy, xz, yz]",
+                     'func': self.get_akcv_od},
+      "r_gyration": {"dimension" : "length",
+                     "help": "The radius of gyration of the ring polymer, for each atom and resolved into Cartesian components [xx, yy, zz]",
+                     'func': self.get_rg},
+      "extras": {    "help": """The additional data returned by the client code, printed verbatim. Will print
+                             out one file per bead, unless the bead attribute is set by the user.""",
+                     'func': (lambda : self.simul.forces.extras)}
+      }
+
+
+   def bind(self, simul):
+      """ Binds to a simulation object to fetch atomic and force data.
+
+      Args:
+         simul: The simulation object that will be managed by this Trajectories.
+      """
+
+      self.simul = simul
+      self.fatom = simul.beads[0].copy()
+
+   def get_akcv(self):
+      """Calculates the contribution to the kinetic energy due to each degree
+      of freedom.
+      """
+
+      rv = np.zeros(self.simul.beads.natoms*3)
+      for b in range(self.simul.beads.nbeads):
+         rv[:] += (self.simul.beads.q[b]-self.simul.beads.qc)*self.simul.forces.f[b]
+      rv *= -0.5/self.simul.beads.nbeads
+      rv += 0.5*Constants.kb*self.simul.ensemble.temp
+      return rv
+
+   def get_akcv_od(self):
+      """Calculates the "off-diagonal" contribution to the kinetic energy tensor
+      due to each atom.
+      """
+
+      rv = np.zeros((self.simul.beads.natoms,3))
+      # helper arrays to make it more obvious what we are computing
+      dq = np.zeros((self.simul.beads.natoms,3))
+      f = np.zeros((self.simul.beads.natoms,3))
+      for b in range(self.simul.beads.nbeads):
+         dq[:] = (self.simul.beads.q[b]-self.simul.beads.qc).reshape((self.simul.beads.natoms,3))
+         f[:] = self.simul.forces.f[b].reshape((self.simul.beads.natoms,3))
+         rv[:,0] += dq[:,0]*f[:,1] + dq[:,1]*f[:,0]
+         rv[:,1] += dq[:,0]*f[:,2] + dq[:,2]*f[:,0]
+         rv[:,2] += dq[:,1]*f[:,2] + dq[:,2]*f[:,1]
+      rv *= 0.5
+      rv *= -0.5/self.simul.beads.nbeads
+
+      return rv.reshape(self.simul.beads.natoms*3)
+
+   def get_rg(self):
+      """Calculates the radius of gyration of the ring polymers.
+
+      Computes separately the x, y, z contributions so that the actual
+      gyration radius can be recovered as sqrt(rx^2+ry^2+rz^2).
+      """
+
+      q = depstrip(self.simul.beads.q)
+      qc = depstrip(self.simul.beads.qc)
+      nat = self.simul.beads.natoms
+      nb = self.simul.beads.nbeads
+      rg = np.zeros(3*nat)
+      for i in range(nb):
+         for j in range(nat):
+            dq = q[i,3*j:3*(j+1)] - qc[3*j:3*(j+1)]
+            rg[3*j:3*(j+1)] += dq*dq
+      return np.sqrt(rg/float(nb))
+
+   def __getitem__(self, key):
+      """Retrieves the item given by key.
+
+      Note that if the key contains a string (arg1; arg2; ... )
+      then it will pass the appropriate positional arguments to the
+      calculation function of the property. Note the brackets and
+      the semi-colon separators. If instead we have the syntax
+      (arg1=val1;arg2; ... ), then the keyword/value pair (arg1,val1)
+      will be added to the keyword argument list. The appropriate key word
+      arguments will then be passed to the calculation function instead.
+
+      Similarly, if the key contains a string {unit}, then it will take
+      the string 'unit' and use it to define the units that the trajectory
+      is output in.
+
+      Args:
+         key: A string contained in trajectory_dict.
+
+      Returns:
+         The trajectory labelled by the keyword key, along with its unit
+         keyword, and the argument lists for the function used to calculate
+         the trajectory specified by the keyword key.
+      """
+
+      (key, unit, arglist, kwarglist) = getall(key)
+      pkey = self.traj_dict[key]
+
+      #pkey["func"](*arglist,**kwarglist) gives the value of the trajectory
+      #in atomic units. unit_to_user() returns the value in the user
+      #specified units.
+      if "dimension" in pkey and unit != "":
+         return  unit_to_user(pkey["dimension"], unit, 1.0) * pkey["func"](*arglist,**kwarglist)
+      else:
+         return pkey["func"](*arglist,**kwarglist)
+
+   def print_traj(self, what, stream, b=0, format="pdb", cell_units="atomic_unit", flush=True):
+      """Prints out a frame of a trajectory for the specified quantity and bead.
+
+      Args:
+         what: A string specifying what to print.
+         b: The bead index. Defaults to 0.
+         stream: A reference to the stream on which data will be printed.
+         format: The output file format.
+         cell_units: The units used to specify the cell parameters.
+         flush: A boolean which specifies whether to flush the output buffer
+            after each write to file or not.
+      """
+
+      cq = self[what]
+      if getkey(what) in [ "extras" ] :
+         stream.write(" #*EXTRAS*# Step:  %10d  Bead:  %5d  \n" % (self.simul.step+1, b) )
+         stream.write(cq[b])
+         stream.write("\n")
+         if flush :
+			stream.flush()
+			os.fsync(stream)
+         return
+      elif getkey(what) in [ "positions", "velocities", "forces" ] :
+         self.fatom.q[:] = cq[b]
+      else:
+         self.fatom.q[:] = cq
+
+      fcell = Cell()
+      fcell.h = self.simul.cell.h*unit_to_user("length", cell_units, 1.0)
+
+      if format == "pdb":
+         io_pdb.print_pdb(self.fatom, fcell, stream, title=("Traj: %s Step:  %10d  Bead:   %5d " % (what, self.simul.step+1, b) ) )
+      elif format == "xyz":
+         io_xyz.print_xyz(self.fatom, fcell, stream, title=("Traj: %s Step:  %10d  Bead:   %5d " % (what, self.simul.step+1, b) ) )
+      elif format == "bin":
+         io_binary.print_bin(self.fatom, fcell, stream, title=("Traj: %s Step:  %10d  Bead:   %5d " % (what, self.simul.step+1, b) ) )
+      if flush :
+         stream.flush()
+         os.fsync(stream)
diff --git a/tools/i-pi/ipi/engine/simulation.py b/tools/i-pi/ipi/engine/simulation.py
new file mode 100644
index 0000000000000000000000000000000000000000..42645939ee994c82611f302b8eb57f41bfdc1464
--- /dev/null
+++ b/tools/i-pi/ipi/engine/simulation.py
@@ -0,0 +1,232 @@
+"""Contains the class that deals with the running of the simulation and
+outputting the results.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+The root class for the whole simulation. Contains references to all the top
+level objects used in the simulation, and controls all the steps that are
+not inherently system dependent, like the running of each time step,
+choosing which properties to initialise, and which properties to output.
+
+Classes:
+   Simulation: Deals with running the simulation and outputting the results.
+"""
+
+__all__ = ['Simulation']
+
+import numpy as np
+import os.path, sys, time
+from ipi.utils.depend import *
+from ipi.utils.units  import *
+from ipi.utils.prng   import *
+from ipi.utils.io     import *
+from ipi.utils.io.io_xml import *
+from ipi.utils.messages import verbosity, info
+from ipi.utils.softexit import softexit
+from ipi.engine.atoms import *
+from ipi.engine.cell import *
+from ipi.engine.forces import Forces
+from ipi.engine.beads import Beads
+from ipi.engine.normalmodes import NormalModes
+from ipi.engine.properties import Properties, Trajectories
+from ipi.engine.outputs import CheckpointOutput
+
+class Simulation(dobject):
+   """Main simulation object.
+
+   Contains all the references and the main dynamics loop. Also handles the
+   initialisation and output.
+
+   Attributes:
+      beads: A beads object giving the atom positions.
+      cell: A cell object giving the system box.
+      prng: A random number generator object.
+      flist: A list of forcefield objects giving different ways to partially
+         calculate the forces.
+      forces: A Forces object for calculating the total force for all the
+         replicas.
+      ensemble: An ensemble object giving the objects necessary for producing
+         the correct ensemble.
+      tsteps: The total number of steps.
+      ttime: The wall clock time (in seconds).
+      format: A string specifying both the format and the extension of traj
+         output.
+      outputs: A list of output objects that should be printed during the run
+      nm:  A helper object dealing with normal modes transformation
+      properties: A property object for dealing with property output.
+      trajs: A trajectory object for dealing with trajectory output.
+      chk: A checkpoint object for dealing with checkpoint output.
+      rollback: If set to true, the state of the simulation at the start
+         of the step will be output to a restart file rather than
+         the current state of the simulation. This is because we cannot
+         restart from half way through a step, only from the beginning of a
+         step, so this is necessary for the trajectory to be continuous.
+
+   Depend objects:
+      step: The current simulation step.
+   """
+
+   def __init__(self, beads, cell, forces, ensemble, prng, outputs, nm, init, step=0, tsteps=1000, ttime=0):
+      """Initialises Simulation class.
+
+      Args:
+         beads: A beads object giving the atom positions.
+         cell: A cell object giving the system box.
+         forces: A forcefield object giving the force calculator for each
+            replica of the system.
+         ensemble: An ensemble object giving the objects necessary for
+            producing the correct ensemble.
+         prng: A random number object.
+         outputs: A list of output objects.
+         nm: A class dealing with path NM operations.
+         init: A class to deal with initializing the simulation object.
+         step: An optional integer giving the current simulation time step.
+            Defaults to 0.
+         tsteps: An optional integer giving the total number of steps. Defaults
+            to 1000.
+         ttime: The simulation running time. Used on restart, to keep a
+            cumulative total.
+      """
+
+      info(" # Initializing simulation object ", verbosity.low )
+      self.prng = prng
+      self.ensemble = ensemble
+      self.beads = beads
+      self.cell = cell
+      self.nm = nm
+
+      # initialize the configuration of the system
+      self.init = init
+      init.init_stage1(self)
+
+      self.flist = forces
+      self.forces = Forces()
+      self.outputs = outputs
+
+      dset(self, "step", depend_value(name="step", value=step))
+      self.tsteps = tsteps
+      self.ttime = ttime
+
+      self.properties = Properties()
+      self.trajs = Trajectories()
+      self.chk = None
+      self.rollback = True
+
+   def bind(self):
+      """Calls the bind routines for all the objects in the simulation."""
+
+      # binds important computation engines
+      self.nm.bind(self.beads, self.ensemble)
+      self.forces.bind(self.beads, self.cell, self.flist)
+      self.ensemble.bind(self.beads, self.nm, self.cell, self.forces, self.prng)
+      self.init.init_stage2(self)
+
+      # binds output management objects
+      self.properties.bind(self)
+      self.trajs.bind(self)
+      for o in self.outputs:
+         o.bind(self)
+
+      self.chk = CheckpointOutput("RESTART", 1, True, 0)
+      self.chk.bind(self)
+
+      # registers the softexit routine
+      softexit.register(self.softexit)
+
+   def softexit(self):
+      """Deals with a soft exit request.
+
+      Tries to ensure that a consistent restart checkpoint is
+      written out.
+      """
+
+      if self.step < self.tsteps:
+         self.step += 1
+      if not self.rollback:
+         self.chk.store()
+      self.chk.write(store=False)
+
+      self.forces.stop()
+
+   def run(self):
+      """Runs the simulation.
+
+      Does all the simulation steps, and outputs data to the appropriate files
+      when necessary. Also deals with starting and cleaning up the threads used
+      in the communication between the driver and the PIMD code.
+      """
+
+      self.forces.run()
+
+      # prints inital configuration -- only if we are not restarting
+      if (self.step == 0):
+         self.step = -1
+         for o in self.outputs:
+            o.write()
+         self.step = 0
+
+      steptime = 0.0
+      simtime =  time.time()
+
+      cstep = 0
+      tptime = 0.0
+      tqtime = 0.0
+      tttime = 0.0
+      ttot = 0.0
+      # main MD loop
+      for self.step in range(self.step,self.tsteps):
+         # stores the state before doing a step.
+         # this is a bit time-consuming but makes sure that we can honor soft
+         # exit requests without screwing the trajectory
+
+         steptime = -time.time()
+         self.chk.store()
+
+         self.ensemble.step()
+
+         for o in self.outputs:
+            o.write()
+
+         if os.path.exists("EXIT"): # soft-exit
+            self.rollback = False
+            softexit.trigger()
+
+         steptime += time.time()
+         ttot += steptime
+         tptime += self.ensemble.ptime
+         tqtime += self.ensemble.qtime
+         tttime += self.ensemble.ttime
+         cstep += 1
+
+         if verbosity.high or (verbosity.medium and self.step%100 == 0) or (verbosity.low and self.step%1000 == 0):
+            info(" # Average timings at MD step % 7d. t/step: %10.5e [p: %10.5e  q: %10.5e  t: %10.5e]" %
+               ( self.step, ttot/cstep, tptime/cstep, tqtime/cstep, tttime/cstep ) )
+            cstep = 0
+            tptime = 0.0
+            tqtime = 0.0
+            tttime = 0.0
+            ttot = 0.0
+            info(" # MD diagnostics: V: %10.5e    Kcv: %10.5e   Ecns: %10.5e" %
+               (self.properties["potential"], self.properties["kinetic_cv"], self.properties["conserved"] ) )
+
+         if (self.ttime > 0 and time.time() - simtime > self.ttime):
+            info(" # Wall clock time expired! Bye bye!", verbosity.low )
+            break
+
+      info(" # Simulation ran successfully for the prescribed total_step! Bye bye!", verbosity.low )
+      self.rollback = False
+      softexit.trigger()
diff --git a/tools/i-pi/ipi/engine/thermostats.py b/tools/i-pi/ipi/engine/thermostats.py
new file mode 100644
index 0000000000000000000000000000000000000000..5375bb917e4349d3b550200f24c759d3bfa0a6c3
--- /dev/null
+++ b/tools/i-pi/ipi/engine/thermostats.py
@@ -0,0 +1,884 @@
+"""Contains the classes that deal with constant temperature dynamics.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Contains the algorithms which propagate the thermostatting steps in the constant
+temperature ensembles. Includes the new GLE thermostat, which can be used to
+run PI+GLE dynamics, reducing the number of path integral beads required.
+
+Classes:
+   Thermostat: Base thermostat class with the generic methods and attributes.
+   ThermoLangevin: Holds the algorithms for a langevin thermostat.
+   ThermoPILE_L: Holds the algorithms for a path-integral langevin equation
+      thermostat, with a thermostat coupled directly to the
+      centroid coordinate of each bead.
+   ThermoPILE_G: Holds the algorithms for a path-integral langevin equation
+      thermostat, with a thermostat coupled to the kinetic energy for
+      the entire system.
+   ThermoSVR: Holds the algorithms for a stochastic velocity rescaling
+      thermostat.
+   ThermoGLE: Holds the algorithms for a generalised langevin equation
+      thermostat.
+   ThermoNMGLE: Holds the algorithms for a generalised langevin equation
+      thermostat in the normal mode representation.
+   ThermoNMGLEG: Holds the algorithms for a generalised langevin equation
+      thermostat in the normal mode representation, with kinetic energy as
+      well as potential energy sampling optimization.
+"""
+
+__all__ = ['Thermostat', 'ThermoLangevin', 'ThermoPILE_L', 'ThermoPILE_G',
+           'ThermoSVR', 'ThermoGLE', 'ThermoNMGLE', 'ThermoNMGLEG']
+
+import numpy as np
+from ipi.utils.depend   import *
+from ipi.utils.units    import *
+from ipi.utils.mathtools import matrix_exp, stab_cholesky, root_herm
+from ipi.utils.prng import Random
+from ipi.utils.messages import verbosity, warning, info
+from ipi.engine.beads import Beads
+from ipi.engine.normalmodes import NormalModes
+
+class Thermostat(dobject):
+   """Base thermostat class.
+
+   Gives the standard methods and attributes needed in all the thermostat
+   classes.
+
+   Attributes:
+      prng: A pseudo random number generator object.
+      ndof: The number of degrees of freedom that the thermostat will be
+         attached to.
+
+   Depend objects:
+      dt: The time step used in the algorithms. Depends on the simulation dt.
+      temp: The simulation temperature. Higher than the system temperature by
+         a factor of the number of beads. Depends on the simulation temp.
+      ethermo: The total energy exchanged with the bath due to the thermostat.
+      p: The momentum vector that the thermostat is coupled to. Depends on the
+         beads p object.
+      m: The mass vector associated with p. Depends on the beads m object.
+      sm: The square root of the mass vector.
+   """
+
+   def __init__(self, temp = 1.0, dt = 1.0, ethermo=0.0):
+      """Initialises Thermostat.
+
+      Args:
+         temp: The simulation temperature. Defaults to 1.0.
+         dt: The simulation time step. Defaults to 1.0.
+         ethermo: The initial heat energy transferred to the bath.
+            Defaults to 0.0. Will be non-zero if the thermostat is
+            initialised from a checkpoint file.
+      """
+
+      dset(self,"temp",   depend_value(name='temp', value=temp))
+      dset(self,"dt",     depend_value(name='dt', value=dt))
+      dset(self,"ethermo",depend_value(name='ethermo',value=ethermo))
+
+   def bind(self, beads=None, atoms=None, pm=None, prng=None, fixdof=None):
+      """Binds the appropriate degrees of freedom to the thermostat.
+
+      This takes an object with degrees of freedom, and makes their momentum
+      and mass vectors members of the thermostat. It also then creates the
+      objects that will hold the data needed in the thermostat algorithms
+      and the dependency network.
+
+      Args:
+         beads: An optional beads object to take the mass and momentum vectors
+            from.
+         atoms: An optional atoms object to take the mass and momentum vectors
+            from.
+         pm: An optional tuple containing a single momentum value and its
+            conjugate mass.
+         prng: An optional pseudo random number generator object. Defaults to
+            Random().
+         fixdof: An optional integer which can specify the number of constraints
+            applied to the system. Defaults to zero.
+
+      Raises:
+         TypeError: Raised if no appropriate degree of freedom or object
+            containing a momentum vector is specified for
+            the thermostat to couple to.
+      """
+
+      if prng is None:
+         warning("Initializing thermostat from standard random PRNG", verbosity.medium)
+         self.prng = Random()
+      else:
+         self.prng = prng
+
+      if not beads is None:
+         dset(self,"p",beads.p.flatten())
+         dset(self,"m",beads.m3.flatten())
+      elif not atoms is None:
+         dset(self,"p",dget(atoms, "p"))
+         dset(self,"m",dget(atoms, "m3"))
+      elif not pm is None:
+         dset(self,"p",pm[0])
+         dset(self,"m",pm[1])
+      else:
+         raise TypeError("Thermostat.bind expects either Beads, Atoms, NormalModes, or a (p,m) tuple to bind to")
+
+      if fixdof is None:
+         self.ndof = len(self.p)
+      else:
+         self.ndof = float(len(self.p) - fixdof)
+
+      dset(self, "sm",
+         depend_array(name="sm", value=np.zeros(len(dget(self,"m"))),
+            func=self.get_sm, dependencies=[dget(self,"m")]))
+
+   def get_sm(self):
+      """Retrieves the square root of the mass matrix.
+
+      Returns:
+         A vector of the square root of the mass matrix with one value for
+         each degree of freedom.
+      """
+
+      return np.sqrt(self.m)
+
+   def step(self):
+      """Dummy thermostat step."""
+
+      pass
+
+
+class ThermoLangevin(Thermostat):
+   """Represents a langevin thermostat.
+
+   Depend objects:
+      tau: Thermostat damping time scale. Larger values give a less strongly
+         coupled thermostat.
+      T: Coefficient of the diffusive contribution of the thermostat, i.e. the
+         drift back towards equilibrium. Depends on tau and the time step.
+      S: Coefficient of the stochastic contribution of the thermostat, i.e.
+         the uncorrelated Gaussian noise. Depends on T and the temperature.
+   """
+
+   def get_T(self):
+      """Calculates the coefficient of the overall drift of the velocities."""
+
+      return np.exp(-0.5*self.dt/self.tau)
+
+   def get_S(self):
+      """Calculates the coefficient of the white noise."""
+
+      return np.sqrt(Constants.kb*self.temp*(1 - self.T**2))
+
+   def __init__(self, temp = 1.0, dt = 1.0, tau = 1.0, ethermo=0.0):
+      """Initialises ThermoLangevin.
+
+      Args:
+         temp: The simulation temperature. Defaults to 1.0.
+         dt: The simulation time step. Defaults to 1.0.
+         tau: The thermostat damping timescale. Defaults to 1.0.
+         ethermo: The initial heat energy transferred to the bath.
+            Defaults to 0.0. Will be non-zero if the thermostat is
+            initialised from a checkpoint file.
+      """
+
+      super(ThermoLangevin,self).__init__(temp, dt, ethermo)
+
+      dset(self,"tau",depend_value(value=tau,name='tau'))
+      dset(self,"T",
+         depend_value(name="T",func=self.get_T,
+            dependencies=[dget(self,"tau"), dget(self,"dt")]))
+      dset(self,"S",
+         depend_value(name="S",func=self.get_S,
+            dependencies=[dget(self,"temp"), dget(self,"T")]))
+
+   def step(self):
+      """Updates the bound momentum vector with a langevin thermostat."""
+
+      p = depstrip(self.p).copy()
+      sm = depstrip(self.sm)
+
+      p /= sm
+
+      self.ethermo += np.dot(p,p)*0.5
+      p *= self.T
+      p += self.S*self.prng.gvec(len(p))
+      self.ethermo -= np.dot(p,p)*0.5
+
+      p *= sm
+
+      self.p = p
+
+
+class ThermoPILE_L(Thermostat):
+   """Represents a PILE thermostat with a local centroid thermostat.
+
+   Attributes:
+      _thermos: The list of the different thermostats for all the ring polymer
+         normal modes.
+      nm: A normal modes object to attach the thermostat to.
+      prng: Random number generator used in the stochastic integration
+         algorithms.
+
+   Depend objects:
+      tau: Centroid thermostat damping time scale. Larger values give a
+         less strongly coupled centroid thermostat.
+      tauk: Thermostat damping time scale for the non-centroid normal modes.
+         Depends on the ring polymer spring constant, and thus the simulation
+         temperature.
+      pilescale: A float used to reduce the intensity of the PILE thermostat if
+         required.
+   """
+
+   def __init__(self, temp = 1.0, dt = 1.0, tau = 1.0, ethermo=0.0, scale=1.0):
+      """Initialises ThermoPILE_L.
+
+      Args:
+         temp: The simulation temperature. Defaults to 1.0.
+         dt: The simulation time step. Defaults to 1.0.
+         tau: The centroid thermostat damping timescale. Defaults to 1.0.
+         ethermo: The initial conserved energy quantity. Defaults to 0.0. Will
+            be non-zero if the thermostat is initialised from a checkpoint file.
+         scale: A float used to reduce the intensity of the PILE thermostat if
+            required.
+
+      Raises:
+         TypeError: Raised if the thermostat is used with any object other than
+            a beads object, so that we make sure that the objects needed for the
+            normal mode transformation exist.
+      """
+
+      super(ThermoPILE_L,self).__init__(temp,dt,ethermo)
+      dset(self,"tau",depend_value(value=tau,name='tau'))
+      dset(self,"pilescale",depend_value(value=scale,name='pilescale'))
+
+   def bind(self, nm=None, prng=None, bindcentroid=True, fixdof=None):
+      """Binds the appropriate degrees of freedom to the thermostat.
+
+      This takes a beads object with degrees of freedom, and makes its momentum
+      and mass vectors members of the thermostat. It also then creates the
+      objects that will hold the data needed in the thermostat algorithms
+      and the dependency network.
+
+      Gives the interface for both the PILE_L and PILE_G thermostats, which
+      only differ in their treatment of the centroid coordinate momenta.
+
+      Args:
+         nm: An optional normal mode object to take the mass and momentum
+            vectors from.
+         prng: An optional pseudo random number generator object. Defaults to
+            Random().
+         bindcentroid: An optional boolean which decides whether a Langevin
+            thermostat is attached to the centroid mode of each atom
+            separately, or the total kinetic energy. Defaults to True, which
+            gives a thermostat bound to each centroid momentum.
+         fixdof: An optional integer which can specify the number of constraints
+            applied to the system. Defaults to zero.
+
+      Raises:
+         TypeError: Raised if no appropriate degree of freedom or object
+            containing a momentum vector is specified for
+            the thermostat to couple to.
+      """
+
+      if nm is None or not type(nm) is NormalModes:
+         raise TypeError("ThermoPILE_L.bind expects a NormalModes argument to bind to")
+      if prng is None:
+         self.prng = Random()
+      else:
+         self.prng = prng
+
+      prev_ethermo = self.ethermo
+
+      # creates a set of thermostats to be applied to individual normal modes
+      self._thermos = [ ThermoLangevin(temp=1, dt=1, tau=1) for b in range(nm.nbeads) ]
+      # optionally does not bind the centroid, so we can re-use all of this
+      # in the PILE_G case
+      if not bindcentroid:
+         self._thermos[0] = None
+
+      self.nm = nm
+
+      dset(self,"tauk",
+         depend_array(name="tauk", value=np.zeros(nm.nbeads-1,float),
+            func=self.get_tauk, dependencies=[dget(self,"pilescale"), dget(nm,"dynomegak")] ) )
+
+      # must pipe all the dependencies in such a way that values for the nm thermostats
+      # are automatically updated based on the "master" thermostat
+      def make_taugetter(k):
+         return lambda: self.tauk[k-1]
+      it = 0
+      for t in self._thermos:
+         if t is None:
+            it += 1
+            continue
+         if it > 0:
+            fixdof = None # only the centroid thermostat may have constraints
+
+         # bind thermostat t to the it-th bead
+         t.bind(pm=(nm.pnm[it,:],nm.dynm3[it,:]),prng=self.prng, fixdof=fixdof)
+         # pipes temp and dt
+         deppipe(self,"temp", t, "temp")
+         deppipe(self,"dt", t, "dt")
+
+         # for tau it is slightly more complex
+         if it == 0:
+            deppipe(self,"tau", t, "tau")
+         else:
+            # Here we manually connect _thermos[i].tau to tauk[i].
+            # Simple and clear.
+            dget(t,"tau").add_dependency(dget(self,"tauk"))
+            dget(t,"tau")._func = make_taugetter(it)
+         dget(self,"ethermo").add_dependency(dget(t,"ethermo"))
+         it += 1
+
+      # since the ethermo will be "delegated" to the normal modes thermostats,
+      # one has to split
+      # any previously-stored value between the sub-thermostats
+      if bindcentroid:
+         for t in self._thermos:
+            t.ethermo = prev_ethermo/nm.nbeads
+         dget(self,"ethermo")._func = self.get_ethermo;
+         # if we are not binding the centroid just yet, this bit of the piping
+         # is delegated to the function which is actually calling this
+
+   def get_tauk(self):
+      """Computes the thermostat damping time scale for the non-centroid
+      normal modes.
+
+      Returns:
+         An array with the damping time scales for the non-centroid modes.
+      """
+
+      # Also include an optional scaling factor to reduce the intensity of NM thermostats
+      return  np.array([ self.pilescale/(2*self.nm.dynomegak[k])  for k in range(1,len(self._thermos)) ])
+
+   def get_ethermo(self):
+      """Computes the total energy transferred to the heat bath for all the
+      thermostats.
+      """
+
+      et = 0.0;
+      for t in self._thermos:
+         et += t.ethermo
+      return et
+
+   def step(self):
+      """Updates the bound momentum vector with a PILE thermostat."""
+
+      # super-cool! just loop over the thermostats! it's as easy as that!
+      for t in self._thermos:
+         t.step()
+
+
+class ThermoSVR(Thermostat):
+   """Represents a stochastic velocity rescaling thermostat.
+
+   Depend objects:
+      tau: Centroid thermostat damping time scale. Larger values give a
+         less strongly coupled centroid thermostat.
+      K: Scaling factor for the total kinetic energy. Depends on the
+         temperature.
+      et: Parameter determining the strength of the thermostat coupling.
+         Depends on tau and the time step.
+   """
+
+   def get_et(self):
+      """Calculates the damping term in the propagator."""
+
+      return np.exp(-0.5*self.dt/self.tau)
+
+   def get_K(self):
+      """Calculates the average kinetic energy per degree of freedom."""
+
+      return Constants.kb*self.temp*0.5
+
+   def __init__(self, temp = 1.0, dt = 1.0, tau = 1.0, ethermo=0.0):
+      """Initialises ThermoSVR.
+
+      Args:
+         temp: The simulation temperature. Defaults to 1.0.
+         dt: The simulation time step. Defaults to 1.0.
+         tau: The thermostat damping timescale. Defaults to 1.0.
+         ethermo: The initial conserved energy quantity. Defaults to 0.0. Will
+            be non-zero if the thermostat is initialised from a checkpoint file.
+      """
+
+      super(ThermoSVR,self).__init__(temp,dt,ethermo)
+
+      dset(self,"tau",depend_value(value=tau,name='tau'))
+      dset(self,"et",
+         depend_value(name="et",func=self.get_et,
+            dependencies=[dget(self,"tau"), dget(self,"dt")]))
+      dset(self,"K",
+         depend_value(name="K",func=self.get_K, dependencies=[dget(self,"temp")]))
+
+   def step(self):
+      """Updates the bound momentum vector with a stochastic velocity rescaling
+      thermostat. See G Bussi, D Donadio, M Parrinello,
+      Journal of Chemical Physics 126, 014101 (2007)
+      """
+
+      K = np.dot(depstrip(self.p),depstrip(self.p)/depstrip(self.m))*0.5
+
+      # rescaling is un-defined if the KE is zero
+      if K == 0.0:
+         return
+
+      # gets the stochastic term (basically a Gamma distribution for the kinetic energy)
+      r1 = self.prng.g
+      if (self.ndof-1)%2 == 0:
+         rg = 2.0*self.prng.gamma((self.ndof-1)/2)
+      else:
+         rg = 2.0*self.prng.gamma((self.ndof-2)/2) + self.prng.g**2
+
+      alpha2 = self.et + self.K/K*(1 - self.et)*(r1**2 + rg) + 2.0*r1*np.sqrt(self.K/K*self.et*(1 - self.et))
+      alpha = np.sqrt(alpha2)
+      if (r1 + np.sqrt(2*K/self.K*self.et/(1 - self.et))) < 0:
+         alpha *= -1
+
+      self.ethermo += K*(1 - alpha2)
+      self.p *= alpha
+
+
+class ThermoPILE_G(ThermoPILE_L):
+   """Represents a PILE thermostat with a global centroid thermostat.
+
+   Simply replaces the Langevin thermostat for the centroid normal mode with
+   a global velocity rescaling thermostat.
+   """
+
+   def __init__(self, temp = 1.0, dt = 1.0, tau = 1.0, ethermo=0.0, scale = 1.0):
+      """Initialises ThermoPILE_G.
+
+      Args:
+         temp: The simulation temperature. Defaults to 1.0.
+         dt: The simulation time step. Defaults to 1.0.
+         tau: The centroid thermostat damping timescale. Defaults to 1.0.
+         ethermo: The initial conserved energy quantity. Defaults to 0.0. Will
+            be non-zero if the thermostat is initialised from a checkpoint file.
+         scale: A float used to reduce the intensity of the PILE thermostat if
+            required.
+      """
+
+      super(ThermoPILE_G,self).__init__(temp,dt,tau,ethermo)
+      dset(self,"pilescale",depend_value(value=scale,name='pilescale'))
+
+   def bind(self, nm=None, prng=None, fixdof=None):
+      """Binds the appropriate degrees of freedom to the thermostat.
+
+      This takes a beads object with degrees of freedom, and makes its momentum
+      and mass vectors members of the thermostat. It also then creates the
+      objects that will hold the data needed in the thermostat algorithms
+      and the dependency network.
+
+      Uses the PILE_L bind interface, with bindcentroid set to false so we can
+      specify that thermostat separately, by binding a global
+      thermostat to the centroid mode.
+
+      Args:
+         beads: An optional beads object to take the mass and momentum vectors
+            from.
+         prng: An optional pseudo random number generator object. Defaults to
+            Random().
+         fixdof: An optional integer which can specify the number of constraints
+            applied to the system. Defaults to zero.
+
+      """
+
+      # first binds as a local PILE, then substitutes the thermostat on the centroid
+      prev_ethermo = self.ethermo
+      super(ThermoPILE_G,self).bind(nm=nm,prng=prng,bindcentroid=False, fixdof=fixdof)
+
+      #centroid thermostat
+      self._thermos[0] = ThermoSVR(temp=1, dt=1, tau=1)
+
+      t = self._thermos[0]
+      t.bind(pm=(nm.pnm[0,:],nm.dynm3[0,:]),prng=self.prng, fixdof=fixdof)
+      deppipe(self,"temp", t, "temp")
+      deppipe(self,"dt", t, "dt")
+      deppipe(self,"tau", t, "tau")
+      dget(self,"ethermo").add_dependency(dget(t,"ethermo"))
+
+      # splits any previous ethermo between the thermostats, and finishes to bind ethermo to the sum function
+      for t in self._thermos:
+         t.ethermo = prev_ethermo/nm.nbeads
+      dget(self,"ethermo")._func = self.get_ethermo;
+
+
+class ThermoGLE(Thermostat):
+   """Represents a GLE thermostat.
+
+   This is similar to a langevin thermostat, in that it uses Gaussian random
+   numbers to simulate a heat bath acting on the system, but simulates a
+   non-Markovian system by using a Markovian formulation in an extended phase
+   space. This allows for a much greater degree of flexibility, and this
+   thermostat, properly fitted, can give the an approximation to the correct
+   quantum ensemble even for a classical, 1-bead simulation. More reasonably,
+   using this thermostat allows for a far smaller number of replicas of the
+   system to be used, as the convergence of the properties
+   of the system is accelerated with respect to number of beads when PI+GLE
+   are used in combination. (See M. Ceriotti, D. E. Manolopoulos, M. Parinello,
+   J. Chem. Phys. 134, 084104 (2011)).
+
+   Attributes:
+      ns: The number of auxilliary degrees of freedom.
+      s: An array holding all the momenta, including the ones for the
+         auxilliary degrees of freedom.
+
+   Depend objects:
+      A: Drift matrix giving the damping time scales for all the different
+         degrees of freedom.
+      C: Static covariance matrix.
+         Satisfies A.C + C.transpose(A) = B.transpose(B), where B is the
+         diffusion matrix, giving the strength of the coupling of the system
+         with the heat bath, and thus the size of the stochastic
+         contribution of the thermostat.
+      T: Matrix for the diffusive contribution of the thermostat, i.e. the
+         drift back towards equilibrium. Depends on A and the time step.
+      S: Matrix for the stochastic contribution of the thermostat, i.e.
+         the uncorrelated Gaussian noise. Depends on C and T.
+   """
+
+   def get_T(self):
+      """Calculates the matrix for the overall drift of the velocities."""
+
+      return matrix_exp(-0.5*self.dt*self.A)
+
+   def get_S(self):
+      """Calculates the matrix for the coloured noise."""
+
+      SST = Constants.kb*(self.C - np.dot(self.T,np.dot(self.C,self.T.T)))
+
+      # Uses a symetric decomposition rather than Cholesky, since it is more stable
+      return root_herm(SST)
+
+   def get_C(self):
+      """Calculates C from temp (if C is not set explicitly)"""
+
+      rC = np.identity(self.ns + 1,float)*self.temp
+      return rC[:]
+
+   def __init__(self, temp = 1.0, dt = 1.0, A = None, C = None, ethermo=0.0):
+      """Initialises ThermoGLE.
+
+      Args:
+         temp: The simulation temperature. Defaults to 1.0.
+         dt: The simulation time step. Defaults to 1.0.
+         A: An optional matrix giving the drift matrix. Defaults to a single
+            value of 1.0.
+         C: An optional matrix giving the covariance matrix. Defaults to an
+            identity matrix times temperature with the same dimensions as the
+            total number of degrees of freedom in the system.
+         ethermo: The initial heat energy transferred to the bath.
+            Defaults to 0.0. Will be non-zero if the thermostat is
+            initialised from a checkpoint file.
+      """
+
+      super(ThermoGLE,self).__init__(temp,dt,ethermo)
+
+      if A is None:
+         A = np.identity(1,float)
+      dset(self,"A",depend_value(value=A.copy(),name='A'))
+
+      self.ns = len(self.A) - 1;
+
+      # now, this is tricky. if C is taken from temp, then we want it to be updated
+      # as a depend of temp. Otherwise, we want it to be an independent beast.
+      if C is None:
+         C = np.identity(self.ns+1,float)*self.temp
+         dset(self,"C",
+            depend_value(name='C', func=self.get_C,
+               dependencies=[dget(self,"temp")]))
+      else:
+         dset(self,"C",depend_value(value=C.copy(),name='C'))
+
+      dset(self,"T",
+         depend_value(name="T",func=self.get_T,
+            dependencies=[dget(self,"A"), dget(self,"dt")]))
+      dset(self,"S",
+         depend_value(name="S",func=self.get_S,
+            dependencies=[dget(self,"C"), dget(self,"T")]))
+
+      self.s = np.zeros(0)
+
+   def bind(self, beads=None, atoms=None, pm=None, prng=None, fixdof=None):
+      """Binds the appropriate degrees of freedom to the thermostat.
+
+      This takes an object with degrees of freedom, and makes their momentum
+      and mass vectors members of the thermostat. It also then creates the
+      objects that will hold the data needed in the thermostat algorithms
+      and the dependency network.
+
+      Args:
+         beads: An optional beads object to take the mass and momentum vectors
+            from.
+         atoms: An optional atoms object to take the mass and momentum vectors
+            from.
+         pm: An optional tuple containing a single momentum value and its
+            conjugate mass.
+         prng: An optional pseudo random number generator object. Defaults to
+            Random().
+         fixdof: An optional integer which can specify the number of constraints
+            applied to the system. Defaults to zero.
+
+      Raises:
+         TypeError: Raised if no appropriate degree of freedom or object
+            containing a momentum vector is specified for
+            the thermostat to couple to.
+      """
+
+      super(ThermoGLE,self).bind(beads,atoms,pm,prng,fixdof)
+
+      # allocates, initializes or restarts an array of s's
+      if self.s.shape != (self.ns + 1, len(dget(self,"m"))):
+         if len(self.s) > 0:
+            warning("Mismatch in GLE s array size on restart, will reinitialise to free particle.", verbosity.low)
+         self.s = np.zeros((self.ns + 1, len(dget(self,"m"))))
+
+         # Initializes the s vector in the free-particle limit
+         info(" GLE additional DOFs initialised to the free-particle limit.", verbosity.low)
+         SC = stab_cholesky(self.C*Constants.kb)
+         self.s[:] = np.dot(SC, self.prng.gvec(self.s.shape))
+      else:
+         info("GLE additional DOFs initialised from input.", verbosity.medium)
+
+   def step(self):
+      """Updates the bound momentum vector with a GLE thermostat"""
+
+      p = depstrip(self.p).copy()
+
+      self.s[0,:] = self.p/self.sm
+
+      self.ethermo += np.dot(self.s[0],self.s[0])*0.5
+      self.s[:] = np.dot(self.T,self.s) + np.dot(self.S,self.prng.gvec(self.s.shape))
+      self.ethermo -= np.dot(self.s[0],self.s[0])*0.5
+
+      self.p = self.s[0]*self.sm
+
+
+class ThermoNMGLE(Thermostat):
+   """Represents a 'normal-modes' GLE thermostat.
+
+   An extension to the GLE thermostat which is applied in the
+   normal modes representation, and which allows to use a different
+   GLE for each normal mode
+
+   Attributes:
+      ns: The number of auxilliary degrees of freedom.
+      nb: The number of beads.
+      s: An array holding all the momenta, including the ones for the
+         auxilliary degrees of freedom.
+
+   Depend objects:
+      A: Drift matrix giving the damping time scales for all the different
+         degrees of freedom (must contain nb terms).
+      C: Static covariance matrix.
+         Satisfies A.C + C.transpose(A) = B.transpose(B), where B is the
+         diffusion matrix, giving the strength of the coupling of the system
+         with the heat bath, and thus the size of the stochastic
+         contribution of the thermostat.
+   """
+
+   def get_C(self):
+      """Calculates C from temp (if C is not set explicitely)."""
+
+      rv = np.ndarray((self.nb, self.ns+1, self.ns+1), float)
+      for b in range(0,self.nb):
+         rv[b] = np.identity(self.ns + 1,float)*self.temp
+      return rv[:]
+
+   def __init__(self, temp = 1.0, dt = 1.0, A = None, C = None, ethermo=0.0):
+      """Initialises ThermoGLE.
+
+      Args:
+         temp: The simulation temperature. Defaults to 1.0.
+         dt: The simulation time step. Defaults to 1.0.
+         A: An optional matrix giving the drift matrix. Defaults to a single
+            value of 1.0.
+         C: An optional matrix giving the covariance matrix. Defaults to an
+            identity matrix times temperature with the same dimensions as the
+            total number of degrees of freedom in the system.
+         ethermo: The initial heat energy transferred to the bath.
+            Defaults to 0.0. Will be non-zero if the thermostat is
+            initialised from a checkpoint file.
+      """
+
+      super(ThermoNMGLE,self).__init__(temp,dt,ethermo)
+
+      if A is None:
+         A = np.identity(1,float)
+      dset(self,"A",depend_value(value=A.copy(),name='A'))
+
+      self.nb = len(self.A)
+      self.ns = len(self.A[0]) - 1;
+
+      # now, this is tricky. if C is taken from temp, then we want it to be
+      # updated as a depend of temp.
+      # Otherwise, we want it to be an independent beast.
+      if C is None:
+         dset(self,"C",depend_value(name='C', func=self.get_C, dependencies=[dget(self,"temp")]))
+      else:
+         dset(self,"C",depend_value(value=C.copy(),name='C'))
+
+   def bind(self, nm=None, prng=None, fixdof=None):
+      """Binds the appropriate degrees of freedom to the thermostat.
+
+      This takes an object with degrees of freedom, and makes their momentum
+      and mass vectors members of the thermostat. It also then creates the
+      objects that will hold the data needed in the thermostat algorithms
+      and the dependency network. Actually, this specific thermostat requires
+      being called on a beads object.
+
+      Args:
+         nm: An optional normal modes object to take the mass and momentum
+            vectors from.
+         prng: An optional pseudo random number generator object. Defaults to
+            Random().
+         fixdof: An optional integer which can specify the number of constraints
+            applied to the system. Defaults to zero.
+
+      Raises:
+         TypeError: Raised if no beads object is specified for
+            the thermostat to couple to.
+      """
+
+      if nm is None or not type(nm) is NormalModes:
+         raise TypeError("ThermoNMGLE.bind expects a NormalModes argument to bind to")
+
+      if prng is None:
+         self.prng = Random()
+      else:
+         self.prng = prng
+
+      if (nm.nbeads != self.nb):
+         raise IndexError("The parameters in nm_gle options correspond to a bead number "+str(self.nb)+ " which does not match the number of beads in the path" + str(nm.nbeads) )
+
+      # allocates, initializes or restarts an array of s's
+      if self.s.shape != (self.nb, self.ns + 1, nm.natoms *3) :
+         if len(self.s) > 0:
+            warning("Mismatch in GLE s array size on restart, will reinitialise to free particle.", verbosity.low)
+         self.s = np.zeros((self.nb, self.ns + 1, nm.natoms*3))
+
+         # Initializes the s vector in the free-particle limit
+         info(" GLE additional DOFs initialised to the free-particle limit.", verbosity.low)
+         for b in range(self.nb):
+            SC = stab_cholesky(self.C[b]*Constants.kb)
+            self.s[b] = np.dot(SC, self.prng.gvec(self.s[b].shape))
+      else:
+         info("GLE additional DOFs initialised from input.", verbosity.medium)
+
+      prev_ethermo = self.ethermo
+
+      # creates a set of thermostats to be applied to individual normal modes
+      self._thermos = [ThermoGLE(temp=1, dt=1, A=self.A[b], C=self.C[b]) for b in range(self.nb)]
+
+      # must pipe all the dependencies in such a way that values for the nm
+      # thermostats are automatically updated based on the "master" thermostat
+      def make_Agetter(k):
+         return lambda: self.A[k]
+      def make_Cgetter(k):
+         return lambda: self.C[k]
+
+      it = 0
+      for t in self._thermos:
+         t.s = self.s[it]  # gets the s's as a slice of self.s
+         t.bind(pm=(nm.pnm[it,:],nm.dynm3[it,:]), prng=self.prng) # bind thermostat t to the it-th normal mode
+
+         # pipes temp and dt
+         deppipe(self,"temp", t, "temp")
+         deppipe(self,"dt", t, "dt")
+
+         # here we pipe the A and C of individual NM to the "master" arrays
+         dget(t,"A").add_dependency(dget(self,"A"))
+         dget(t,"A")._func = make_Agetter(it)
+         dget(t,"C").add_dependency(dget(self,"C"))
+         dget(t,"C")._func = make_Cgetter(it)
+         dget(self,"ethermo").add_dependency(dget(t,"ethermo"))
+         it += 1
+
+      # since the ethermo will be "delegated" to the normal modes thermostats,
+      # one has to split
+      # any previously-stored value between the sub-thermostats
+      for t in self._thermos:
+         t.ethermo = prev_ethermo/self.nb
+
+      dget(self,"ethermo")._func = self.get_ethermo;
+
+   def step(self):
+      """Updates the thermostat in NM representation by looping over the
+      individual DOFs.
+      """
+
+      for t in self._thermos:
+         t.step()
+
+   def get_ethermo(self):
+      """Computes the total energy transferred to the heat bath for all the nm
+      thermostats.
+      """
+
+      et = 0.0;
+      for t in self._thermos:
+         et += t.ethermo
+      return et
+
+
+class ThermoNMGLEG(ThermoNMGLE):
+   """Represents a 'normal-modes' GLE thermostat + SVR.
+
+   An extension to the above NMGLE thermostat which also adds a stochastic velocity
+   rescaling to the centroid.
+
+   Depend objects:
+      tau: Thermostat damping time scale. Larger values give a less strongly
+         coupled thermostat.
+   """
+
+   def __init__(self, temp = 1.0, dt = 1.0, A = None, C = None, tau=1.0, ethermo=0.0):
+
+      super(ThermoNMGLEG,self).__init__(temp, dt, A, C, ethermo)
+      dset(self,"tau",depend_value(value=tau,name='tau'))
+
+   def bind(self, nm=None, prng=None, fixdof=None):
+      """Binds the appropriate degrees of freedom to the thermostat.
+
+      This takes an object with degrees of freedom, and makes their momentum
+      and mass vectors members of the thermostat. It also then creates the
+      objects that will hold the data needed in the thermostat algorithms
+      and the dependency network. Actually, this specific thermostat requires
+      being called on a beads object.
+
+      Args:
+         nm: An optional normal modes object to take the mass and momentum
+            vectors from.
+         prng: An optional pseudo random number generator object. Defaults to
+            Random().
+         fixdof: An optional integer which can specify the number of constraints
+            applied to the system. Defaults to zero.
+      """
+
+      super(ThermoNMGLEG,self).bind(nm, prng, fixdof)
+
+      t = ThermoSVR(self.temp, self.dt, self.tau)
+
+      t.bind(pm=(nm.pnm[0,:],nm.dynm3[0,:]), prng=self.prng) # bind global thermostat to centroid
+
+      # pipes temp and dt
+      deppipe(self,"temp", t, "temp")
+      deppipe(self,"dt", t, "dt")
+      deppipe(self,"tau", t, "tau")
+
+      dget(self,"ethermo").add_dependency(dget(t,"ethermo"))
+      self._thermos.append(t)
+
diff --git a/tools/i-pi/ipi/inputs/README b/tools/i-pi/ipi/inputs/README
new file mode 100644
index 0000000000000000000000000000000000000000..547884031df2cd054a66ea72f6f40badf2ab4037
--- /dev/null
+++ b/tools/i-pi/ipi/inputs/README
@@ -0,0 +1,24 @@
+ -- Input files directory --
+
+ * This is the directory containing the input classes.
+
+ * Files:
+   - atoms.py: Creates objects that deal with classical simulations.
+   - barostats.py: Creates objects that deal with constant pressure and 
+      stress simulations.
+   - beads.py: Creates objects that deal with quantum simulations.
+   - cell.py: Creates objects that deal with the simulation box.
+   - ensembles.py: Creates objects that deal with the different ensembles.
+   - forces.py: Creates objects that deal with the jobs to send to 
+      the driver code.
+   - initializer.py: Creates the objects that deal with initializing the
+      simulation.
+   - interface.py: Creates objects that deal with socket creation.
+   - normalmodes.py: Creates the objects that deal with the normal mode
+      transformation.
+   - outputs.py: Creates objects that deal with output files.
+   - prng.py: Creates the objects that deal with random number generation.
+   - simulation.py: Creates objects that deal with all the top level 
+      information, such as input/output.
+   - thermostats.py: Creates objects that deal with constant temperature 
+      simulations.
diff --git a/tools/i-pi/ipi/inputs/__init__.py b/tools/i-pi/ipi/inputs/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..8e5fcd5089f8667f3aa3cbce9bef8581822937cb
--- /dev/null
+++ b/tools/i-pi/ipi/inputs/__init__.py
@@ -0,0 +1,3 @@
+__all__ = [ 'barostats', 'cell', 'simulation', 'ensembles', 'thermostats',
+            'interface', 'forces', 'atoms', 'beads', 'prng', 'outputs', 
+            'normalmodes', 'initializer']
diff --git a/tools/i-pi/ipi/inputs/atoms.py b/tools/i-pi/ipi/inputs/atoms.py
new file mode 100644
index 0000000000000000000000000000000000000000..6068be196144b14abd80ebaf3611b09299732def
--- /dev/null
+++ b/tools/i-pi/ipi/inputs/atoms.py
@@ -0,0 +1,121 @@
+"""Deals with creating the atoms class.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Generates an atoms class either from a set of positions and momenta.
+This class is only used if no beads tag is present in the xml file.
+
+Classes:
+   InputAtoms: Deals with creating the Atoms object from a file, and
+      writing the checkpoints.
+"""
+
+import numpy as np
+from ipi.engine.atoms import *
+from ipi.utils.inputvalue import *
+from ipi.utils.depend import *
+from ipi.utils.units import unit_to_internal
+
+__all__ = ['InputAtoms']
+
+class InputAtoms(Input):
+   """Atoms input class.
+
+   Handles generating the appropriate atoms class from the xml input file,
+   and generating the xml checkpoint tags and data from an instance of the
+   object.
+
+   Attributes:
+      natoms: An optional integer giving the number of atoms. Defaults to 0.
+      q: An optional array giving the atom positions. Defaults to an empty
+         array with no elements.
+      p: An optional array giving the atom momenta. Defaults to an empty
+         array with no elements.
+      m: An optional array giving the atom masses. Defaults to an empty
+         array with no elements.
+      names: An optional array giving the atom names. Defaults to an empty
+         array with no elements
+   """
+
+   fields={ "natoms"    : (InputValue, {"dtype"     : int,
+                                        "default"   : 0,
+                                        "help"      : "The number of atoms." }),
+            "q"         : (InputArray, {"dtype"     : float,
+                                        "default"   : input_default(factory=np.zeros, args=(0,)),
+                                        "help"      : "The positions of the atoms, in the format [x1, y1, z1, x2, ... ].",
+                                        "dimension" : "length" }),
+            "p"         : (InputArray, {"dtype"     : float,
+                                        "default"   : input_default(factory=np.zeros, args=(0,)),
+                                        "help"      : "The momenta of the atoms, in the format [px1, py1, pz1, px2, ... ].",
+                                        "dimension" : "momentum" }),
+            "m"         : (InputArray, {"dtype"     : float,
+                                        "default"   : input_default(factory=np.zeros, args=(0,)),
+                                        "help"      : "The masses of the atoms, in the format [m1, m2, ... ].",
+                                        "dimension" : "mass" }),
+            "names"     : (InputArray, {"dtype"     : str,
+                                        "default"   : input_default(factory=np.zeros, args=(0,), kwargs = {'dtype': np.dtype('|S6')}),
+                                        "help"      : "The names of the atoms, in the format [name1, name2, ... ]." })
+         }
+
+   default_help = "Deals with a single replica of the system or classical simulations."
+   default_label = "ATOMS"
+
+   def store(self, atoms):
+      """Takes an Atoms instance and stores a minimal representation of it.
+
+      Args:
+         atoms: An Atoms object from which to initialise from.
+         filename: An optional string giving a filename to take the atom
+            positions from. Defaults to ''.
+      """
+
+      super(InputAtoms,self).store()
+      self.natoms.store(atoms.natoms)
+      self.q.store(depstrip(atoms.q))
+      self.p.store(depstrip(atoms.p))
+      self.m.store(depstrip(atoms.m))
+      self.names.store(depstrip(atoms.names))
+
+   def fetch(self):
+      """Creates an atoms object.
+
+      Returns:
+         An atoms object of the appropriate type and with the appropriate
+         properties given the attributes of the InputAtoms object.
+      """
+
+      super(InputAtoms,self).fetch()
+      atoms = Atoms(self.natoms.fetch())
+      atoms.q = self.q.fetch()
+      atoms.p = self.p.fetch()
+      atoms.m = self.m.fetch()
+      atoms.names = self.names.fetch()
+      return atoms
+
+   def write(self,  name="", indent=""):
+      """Overloads Input write() function so that nothing is written if
+      no atoms are present. This occurs if the beads object has been specified,
+      so that the classical atoms object is not initialized.
+
+      Returns:
+         A string giving the appropriate xml tags for the checkpoint file.
+      """
+
+      if self.natoms.fetch() > 0:
+         return super(InputAtoms,self).write(name=name,indent=indent)
+      else:
+         return ""
diff --git a/tools/i-pi/ipi/inputs/barostats.py b/tools/i-pi/ipi/inputs/barostats.py
new file mode 100644
index 0000000000000000000000000000000000000000..84d0d83f43576388246755a295e1416e3159d32c
--- /dev/null
+++ b/tools/i-pi/ipi/inputs/barostats.py
@@ -0,0 +1,107 @@
+"""Deals with creating the barostat class.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Classes:
+   InputBaro: Deals with creating the Barostat object from a file, and
+      writing the checkpoints.
+"""
+
+import numpy as np
+import ipi.engine.thermostats
+from ipi.engine.barostats import *
+from ipi.utils.inputvalue import *
+from ipi.inputs.thermostats import *
+
+__all__ = ['InputBaro']
+
+class InputBaro(Input):
+   """Barostat input class.
+
+   Handles generating the appropriate barostat class from the xml input file,
+   and generating the xml checkpoint tags and data from an
+   instance of the object.
+
+   Attributes:
+      mode: An optional string giving the type of barostat used. Defaults to
+         'rigid'.
+
+   Fields:
+      thermostat: A thermostat object giving the cell thermostat.
+      tau: The time constant associated with the dynamics of the piston.
+      p: The conjugate momentum to the volume degree of freedom.
+   """
+
+   attribs={ "mode": (InputAttribute, {"dtype"    : str,
+                                   "default" : "dummy",
+                                   "help"     : """The type of barostat.  Currently, only a 'isotropic' barostat is implemented, that combines
+                                   ideas from the Bussi-Zykova-Parrinello barostat for classical MD with ideas from the
+                                   Martyna-Hughes-Tuckerman centroid barostat for PIMD; see Ceriotti, More, Manolopoulos, Comp. Phys. Comm. 2013 for
+                                   implementation details.""",
+                                   "options"  : ["dummy", "isotropic"]}) }
+   fields={ "thermostat": (InputThermo, {"default" : input_default(factory=ipi.engine.thermostats.Thermostat),
+                                         "help"    : "The thermostat for the cell. Keeps the cell velocity distribution at the correct temperature. Note that the 'pile_l', 'pile_g', 'nm_gle' and 'nm_gle_g' options will not work for this thermostat."}),
+            "tau": (InputValue, {"default" : 1.0,
+                                  "dtype" : float,
+                                  "dimension" : "time",
+                                  "help"    : "The time constant associated with the dynamics of the piston."}),
+            "p": (InputArray, {  "dtype"     : float,
+                                 "default"   : input_default(factory=np.zeros, args = (0,)),
+                                 "help"      : "Momentum (or momenta) of the piston.",
+                                 "dimension" : "momentum" })
+           }
+
+   default_help = "Simulates an external pressure bath."
+   default_label = "BAROSTAT"
+
+   def store(self, baro):
+      """Takes a barostat instance and stores a minimal representation of it.
+
+      Args:
+         baro: A barostat object.
+      """
+
+      super(InputBaro,self).store(baro)
+      self.thermostat.store(baro.thermostat)
+      self.tau.store(baro.tau)
+      if type(baro) is BaroBZP:
+         self.mode.store("isotropic")
+         self.p.store(baro.p)
+      elif type(baro) is Barostat:
+         self.mode.store("dummy")
+      else:
+         raise TypeError("The type " + type(baro).__name__ + " is not a valid barostat type")
+
+
+   def fetch(self):
+      """Creates a barostat object.
+
+      Returns:
+         A barostat object of the appropriate type and with the appropriate
+         thermostat given the attributes of the InputBaro object.
+      """
+
+      super(InputBaro,self).fetch()
+      if self.mode.fetch() == "isotropic":
+         baro = BaroBZP(thermostat=self.thermostat.fetch(), tau=self.tau.fetch())
+         if self.p._explicit: baro.p = self.p.fetch()
+      elif self.mode.fetch() == "dummy":
+         baro = Barostat(thermostat=self.thermostat.fetch(), tau=self.tau.fetch())
+      else:
+         raise ValueError(self.mode.fetch() + " is not a valid mode of barostat")
+
+      return baro
diff --git a/tools/i-pi/ipi/inputs/beads.py b/tools/i-pi/ipi/inputs/beads.py
new file mode 100644
index 0000000000000000000000000000000000000000..f4caafcbb99b27b518ae694c2b9199f8237c7cc5
--- /dev/null
+++ b/tools/i-pi/ipi/inputs/beads.py
@@ -0,0 +1,137 @@
+"""Deals with creating the beads class.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Classes:
+   InputBeads: Deals with creating the Beads object from a file, and
+      writing the checkpoints.
+"""
+
+import numpy as np
+from ipi.engine.beads import *
+from ipi.engine.atoms import Atoms
+from ipi.utils.inputvalue import *
+from ipi.utils.depend import *
+from ipi.utils.units import *
+from ipi.inputs.atoms import *
+
+__all__ = ['InputBeads']
+
+class InputBeads(Input):
+   """Beads input class.
+
+   Handles generating the appropriate beads class from the xml input file,
+   and generating the xml checkpoint tags and data from an instance of the
+   object.
+
+   Attributes:
+      nbeads: An optional integer giving the number of beads. Defaults to 0.
+      natoms: An optional integer giving the number of atoms. Defaults to 0.
+
+   Fields:
+      q: An optional array giving the bead positions. Defaults to an empty
+         array with no elements.
+      p: An optional array giving the bead momenta. Defaults to an empty
+         array with no elements.
+      m: An optional array giving the bead masses. Defaults to an empty array
+         with no elements.
+      names: An optional array giving the bead names. Defaults to an empty
+         array with no elements.
+   """
+
+   attribs = { "natoms"  : (InputAttribute, {"dtype" : int,  "default"   : 0,
+                                             "help"  : "The number of atoms."}),
+               "nbeads"  : (InputAttribute, {"dtype" : int,  "default"   : 0,
+                                             "help"  : "The number of beads."})
+            }
+   fields={ "q"     : (InputArray, {"dtype"     : float,
+                                    "default"   : input_default(factory=np.zeros, args = (0,)),
+                                    "help"      : "The positions of the beads. In an array of size [nbeads, 3*natoms].",
+                                    "dimension" : "length"}),
+            "p"     : (InputArray, {"dtype"     : float,
+                                    "default"   : input_default(factory=np.zeros, args = (0,)),
+                                    "help"      : "The momenta of the beads. In an array of size [nbeads, 3*natoms].",
+                                    "dimension" : "momentum"}),
+            "m"     : (InputArray, {"dtype"     : float,
+                                    "default"   : input_default(factory=np.zeros, args = (0,)),
+                                    "help"      : "The masses of the atoms, in the format [m1, m2, ... ].",
+                                    "dimension" : "mass"}),
+            "names" : (InputArray, {"dtype"     : str,
+                                    "default"   : input_default(factory=np.zeros, args=(0,), kwargs={'dtype': np.dtype('|S6')}),
+                                    "help"      : "The names of the atoms, in the format [name1, name2, ... ]."})  }
+
+   default_help = "Describes the bead configurations in a path integral simulation."
+   default_label = "BEADS"
+
+
+   def store(self, beads):
+      """Takes a Beads instance and stores a minimal representation of it.
+
+      Args:
+         beads: A Beads object from which to initialise from.
+      """
+
+      super(InputBeads,self).store()
+      self.natoms.store(beads.natoms)
+      self.nbeads.store(beads.nbeads)
+
+      self.q.store(depstrip(beads.q))
+      self.p.store(depstrip(beads.p))
+      self.m.store(depstrip(beads.m))
+      self.names.store(depstrip(beads.names))
+
+   def fetch(self):
+      """Creates a beads object.
+
+      Returns:
+         A beads object of the appropriate type and with the appropriate
+         properties given the attributes of the InputBeads object.
+      """
+
+      super(InputBeads,self).fetch()
+      beads = Beads(self.natoms.fetch(),self.nbeads.fetch())
+
+      # tries to fill up with as much data as available and valid
+      q = self.q.fetch()
+      if (q.shape == (beads.nbeads,3*beads.natoms)):
+         beads.q = q
+      elif (beads.nbeads == 1 and q.shape == (3*beads.natoms,)):
+         beads.q = q
+      elif len(q) != 0:
+         raise ValueError("Array shape mismatches for q in <beads> input.")
+
+      p = self.p.fetch()
+      if (p.shape == (beads.nbeads,3*beads.natoms)):
+         beads.p = p
+      elif (beads.nbeads == 1 and p.shape == (3*beads.natoms,)):
+         beads.p = p
+      elif len(p) != 0:
+         raise ValueError("Array shape mismatches for p in <beads> input.")
+
+      m = self.m.fetch()
+      if (m.shape == (beads.natoms,)):
+         beads.m = m
+      elif len(m) != 0:
+         raise ValueError("Array shape mismatches for m in <beads> input.")
+
+      n = self.names.fetch()
+      if (n.shape == (beads.natoms,)):
+         beads.names = n
+      elif len(n) != 0:
+         raise ValueError("Array shape mismatches for names in <beads> input.")
+
+      return beads
diff --git a/tools/i-pi/ipi/inputs/cell.py b/tools/i-pi/ipi/inputs/cell.py
new file mode 100644
index 0000000000000000000000000000000000000000..9b316ef92f6da8e3a4c53f929cdf39adbe172120
--- /dev/null
+++ b/tools/i-pi/ipi/inputs/cell.py
@@ -0,0 +1,77 @@
+"""Deals with creating the cell class.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Generates an cell class from a cell vector.
+
+Classes:
+   InputCell: Deals with creating the Cell object from a file, and
+      writing the checkpoints.
+"""
+
+import numpy as np
+from copy import copy
+from ipi.engine.cell import *
+from ipi.utils.inputvalue import *
+from ipi.utils.units import UnitMap
+from ipi.utils.messages import verbosity, warning
+
+__all__ = [ 'InputCell' ]
+
+class InputCell(InputArray):
+   """Cell input class.
+
+   Handles generating the appropriate cell class from the xml input file,
+   and generating the xml checkpoint tags and data from an instance of the
+   object.
+   """
+
+   attribs = copy(InputArray.attribs)
+
+   default_help = "Deals with the cell parameters. Takes as array which can be used to initialize the cell vector matrix."
+   default_label = "CELL"
+
+   def __init__(self, help=None, dimension=None, units=None, default=None, dtype=None):
+      """Initializes InputCell.
+
+      Just calls the parent initialization function with appropriate arguments.
+      """
+
+      super(InputCell,self).__init__(dtype=float, dimension="length", default=default, help=help)
+
+   def store(self, cell):
+      """Takes a Cell instance and stores of minimal representation of it.
+
+      Args:
+         cell: A cell object.
+      """
+
+      super(InputCell,self).store(cell.h)
+      self.shape.store((3,3))
+
+   def fetch(self):
+      """Creates a cell object.
+
+      Returns:
+         A cell object of the appropriate type and with the appropriate
+         properties given the attributes of the InputCell object.
+      """
+
+      h = super(InputCell,self).fetch()
+      h.shape = (3,3)
+
+      return Cell(h=h)
diff --git a/tools/i-pi/ipi/inputs/ensembles.py b/tools/i-pi/ipi/inputs/ensembles.py
new file mode 100644
index 0000000000000000000000000000000000000000..4a5519fff7aaeb6534459a7e4fbc7f1bb64e2963
--- /dev/null
+++ b/tools/i-pi/ipi/inputs/ensembles.py
@@ -0,0 +1,185 @@
+"""Deals with creating the ensembles class.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Classes:
+   InputEnsemble: Deals with creating the Ensemble object from a file, and
+      writing the checkpoints.
+"""
+
+import numpy as np
+import ipi.engine.thermostats
+import ipi.engine.initializer
+import ipi.engine.barostats
+from ipi.engine.ensembles import *
+from ipi.utils.inputvalue import *
+from ipi.inputs.barostats import *
+from ipi.inputs.thermostats import *
+from ipi.inputs.initializer import *
+from ipi.utils.units import *
+
+__all__ = ['InputEnsemble']
+
+class InputEnsemble(Input):
+   """Ensemble input class.
+
+   Handles generating the appropriate ensemble class from the xml input file,
+   and generating the xml checkpoint tags and data from an instance of the
+   object.
+
+   Attributes:
+      mode: An optional string giving the mode of ensemble to be simulated.
+         Defaults to 'unknown'.
+
+   Fields:
+      thermostat: The thermostat to be used for constant temperature dynamics.
+      barostat: The barostat to be used for constant pressure or stress
+         dynamics.
+      timestep: An optional float giving the size of the timestep in atomic
+         units. Defaults to 1.0.
+      temperature: An optional float giving the temperature in Kelvin. Defaults
+         to 1.0.
+      pressure: An optional float giving the external pressure in atomic units.
+         Defaults to 1.0.
+      fixcom: An optional boolean which decides whether the centre of mass
+         motion will be constrained or not. Defaults to False.
+      replay_file: An optional string that gives an input file name to get
+         a trajectory to be re-run.
+   """
+
+   attribs={"mode"  : (InputAttribute, {"dtype"   : str,
+                                    "help"    : "The ensemble that will be sampled during the simulation. 'replay' means that a simulation is restarted from a previous simulation.",
+                                    "options" : ['nve', 'nvt', 'npt', 'replay']}) }
+   fields={"thermostat" : (InputThermo, {"default"   : input_default(factory=ipi.engine.thermostats.Thermostat),
+                                         "help"      : "The thermostat for the atoms, keeps the atom velocity distribution at the correct temperature."} ),
+           "barostat" : (InputBaro, {"default"       : input_default(factory=ipi.engine.barostats.Barostat),
+                                     "help"          : InputBaro.default_help}),
+           "timestep": (InputValue, {"dtype"         : float,
+                                     "default"       : 1.0,
+                                     "help"          : "The time step.",
+                                     "dimension"     : "time"}),
+           "temperature" : (InputValue, {"dtype"     : float,
+                                         "default"   : 1.0,
+                                         "help"      : "The temperature of the system.",
+                                         "dimension" : "temperature"}),
+           "pressure" : (InputValue, {"dtype"        : float,
+                                      "default"      : 1.0,
+                                      "help"         : "The external pressure.",
+                                      "dimension"    : "pressure"}),
+           "fixcom": (InputValue, {"dtype"           : bool,
+                                   "default"         : True,
+                                   "help"            : "This describes whether the centre of mass of the particles is fixed."}),
+           "replay_file": (InputInitFile, {"default" : input_default(factory=ipi.engine.initializer.InitBase),
+                           "help"            : "This describes the location to read a trajectory file from."})
+         }
+
+   default_help = "Holds all the information that is ensemble specific, such as the temperature and the external pressure, and the thermostats and barostats that control it."
+   default_label = "ENSEMBLE"
+
+   def store(self, ens):
+      """Takes an ensemble instance and stores a minimal representation of it.
+
+      Args:
+         ens: An ensemble object.
+      """
+
+      super(InputEnsemble,self).store(ens)
+      if type(ens) is ReplayEnsemble:
+         self.mode.store("rerun")
+         tens = 0
+      elif type(ens) is NVEEnsemble:
+         self.mode.store("nve")
+         tens = 1
+      elif type(ens) is NVTEnsemble:
+         self.mode.store("nvt")
+         tens = 2
+      elif type(ens) is NPTEnsemble:
+         self.mode.store("npt")
+         tens = 3
+
+      self.timestep.store(ens.dt)
+      self.temperature.store(ens.temp)
+
+      if tens == 0:
+         self.replay_file.store(ens.intraj)
+      if tens > 1:
+         self.thermostat.store(ens.thermostat)
+         self.fixcom.store(ens.fixcom)
+      if tens > 2:
+         self.barostat.store(ens.barostat)
+      if tens == 3:
+         self.pressure.store(ens.pext)
+
+
+   def fetch(self):
+      """Creates an ensemble object.
+
+      Returns:
+         An ensemble object of the appropriate mode and with the appropriate
+         objects given the attributes of the InputEnsemble object.
+      """
+
+      super(InputEnsemble,self).fetch()
+
+      if self.mode.fetch() == "nve" :
+         ens = NVEEnsemble(dt=self.timestep.fetch(),
+            temp=self.temperature.fetch(), fixcom=self.fixcom.fetch())
+      elif self.mode.fetch() == "nvt" :
+         ens = NVTEnsemble(dt=self.timestep.fetch(),
+            temp=self.temperature.fetch(), thermostat=self.thermostat.fetch(), fixcom=self.fixcom.fetch())
+      elif self.mode.fetch() == "npt" :
+         ens = NPTEnsemble(dt=self.timestep.fetch(),
+            temp=self.temperature.fetch(), thermostat=self.thermostat.fetch(), fixcom=self.fixcom.fetch(),
+                  pext=self.pressure.fetch(), barostat=self.barostat.fetch() )
+      elif self.mode.fetch() == "replay":
+         ens = ReplayEnsemble(dt=self.timestep.fetch(),
+            temp=self.temperature.fetch(),fixcom=False,intraj=self.replay_file.fetch() )
+      else:
+         raise ValueError("'" + self.mode.fetch() + "' is not a supported ensemble mode.")
+
+      return ens
+
+   def check(self):
+      """Function that deals with optional arguments.
+
+      Makes sure that if the ensemble requires a thermostat or barostat that
+      they have been defined by the user and not given the default values.
+      """
+
+      super(InputEnsemble,self).check()
+      if self.mode.fetch() == "nvt":
+         if self.thermostat._explicit == False:
+            raise ValueError("No thermostat tag supplied for NVT simulation")
+      if self.mode.fetch() == "npt":
+         if self.thermostat._explicit == False:
+            raise ValueError("No thermostat tag supplied for NPT simulation")
+         if self.barostat._explicit == False:
+            raise ValueError("No barostat tag supplied for NPT simulation")
+         if self.barostat.thermostat._explicit == False:
+            raise ValueError("No thermostat tag supplied in barostat for NPT simulation")
+
+      if self.timestep.fetch() <= 0:
+         raise ValueError("Non-positive timestep specified.")
+      if self.temperature.fetch() <= 0:
+            raise ValueError("Non-positive temperature specified.")
+
+      if self.mode.fetch() == "npt":
+         if not self.pressure._explicit:
+            raise ValueError("Pressure should be supplied for constant pressure simulation")
+      if self.mode.fetch() == "npt" or self.mode.fetch() == "nvt":
+         if not self.temperature._explicit:
+            raise ValueError("Temperature should be supplied for constant temperature simulation")
diff --git a/tools/i-pi/ipi/inputs/forces.py b/tools/i-pi/ipi/inputs/forces.py
new file mode 100644
index 0000000000000000000000000000000000000000..d343e19e0fc618ec571c7275af397ed1ae12047f
--- /dev/null
+++ b/tools/i-pi/ipi/inputs/forces.py
@@ -0,0 +1,176 @@
+"""Deals with creating the forcefield class.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Classes:
+   InputForces: Deals with creating all the forcefield objects.
+   InputForceBeads: Base class to deal with one particular forcefield object.
+   InputFBSocket: Deals with creating a forcefield using sockets.
+"""
+
+__all__ = ['InputForces', 'InputForceBeads', "InputFBSocket"]
+
+from copy import copy
+from ipi.engine.forces import *
+from ipi.inputs.interface import InputInterfaceSocket
+from ipi.utils.inputvalue import *
+
+class InputForceBeads(Input):
+   """ForceBeads input class.
+
+   Handles generating one instance of a particular forcefield class from the xml
+   input file, and generating the xml checkpoint tags and data from an
+   instance of the object.
+
+   Attributes:
+      nbeads: The number of beads that the forcefield will be evaluated on.
+      weight: A scaling factor for the contribution from this forcefield.
+   """
+
+   attribs = { "nbeads" : ( InputAttribute, { "dtype"   : int,
+                                         "default" : 0,
+                                         "help"    : "If the forcefield is to be evaluated on a contracted ring polymer, this gives the number of beads that are used. If not specified, the forcefield will be evaluated on the full ring polymer." } ),
+               "weight" : ( InputAttribute, { "dtype"   : float,
+                                         "default" : 1.0,
+                                         "help"    : "A scaling factor for this forcefield, to be applied before adding the force calculated by this forcefield to the total force." } )
+            }
+
+   default_help = "Base class that deals with the assigning of force calculation jobs and collecting the data."
+   default_label = "FORCEBEADS"
+
+   def store(self, forceb):
+      """Takes a ForceBeads instance and stores a minimal representation of it.
+
+      Args:
+         forceb: A ForceBeads object.
+      """
+
+      Input.store(self,forceb)
+      self.nbeads.store(forceb.nbeads)
+      self.weight.store(forceb.weight)
+
+   def fetch(self):
+      """Creates a ForceBeads object.
+
+      Returns:
+         A ForceBeads object.
+      """
+
+      super(InputForceBeads,self).fetch()
+
+      return ForceBeads(model=ForceField(), nbeads=self.nbeads.fetch(), weight=self.weight.fetch())
+
+   def check(self):
+      """Checks for optional parameters."""
+
+      super(InputForceBeads,self).check()
+      if self.nbeads.fetch() < 0:
+         raise ValueError("The forces must be evaluated over a positive number of beads.")
+
+
+class InputFBSocket(InputForceBeads, InputInterfaceSocket):
+   """Creates a ForceBeads object with a socket interface.
+
+   Handles generating one instance of a socket interface forcefield class.
+   Shares its attributes between InputForceBeads, which deals with creating the
+   forcefield, and InputInterfaceSocket, which deals with creating the socket
+   interface.
+   """
+
+   attribs = copy(InputInterfaceSocket.attribs)
+   attribs.update(InputForceBeads.attribs)
+
+   default_help = "Deals with the assigning of force calculation jobs to different driver codes, and collecting the data, using a socket for the data communication."
+   default_label = "SOCKET"
+
+   def store(self, forceb):
+      """Takes a ForceField instance and stores a minimal representation of it.
+
+      Args:
+         forceb: A ForceBeads object with a FFSocket forcemodel object.
+      """
+
+      if (not type(forceb.f_model) is FFSocket):
+         raise TypeError("The type " + type(forceb.f_model).__name__ + " is not a valid socket forcefield")
+
+      InputForceBeads.store(self,forceb)
+      InputInterfaceSocket.store(self,forceb.f_model.socket)
+
+   def fetch(self):
+      """Creates a ForceBeads object.
+
+      Returns:
+         A ForceBeads object with the correct socket parameters.
+      """
+
+      return ForceBeads(model=FFSocket( interface=InputInterfaceSocket.fetch(self) ),nbeads=self.nbeads.fetch(),weight=self.weight.fetch() )
+
+   def check(self):
+      """Deals with optional parameters."""
+
+      InputInterfaceSocket.check(self)
+      InputForceBeads.check(self)
+
+
+class InputForces(Input):
+   """Deals with creating all the forcefield objects required in the
+   simulation.
+
+   Dynamic fields:
+      socket: Socket object to create the server socket.
+   """
+
+   #At the moment only socket driver codes implemented, other types
+   #could be used in principle
+   dynamic = {  "socket" : (InputFBSocket, { "help" : InputFBSocket.default_help } )
+            }
+
+   default_help = "Deals with creating all the necessary forcefield objects."
+   default_label = "FORCES"
+
+   def fetch(self):
+      """Returns a list of the output objects included in this dynamic
+      container.
+
+      Returns:
+         A list of tuples, with each tuple being of the form ('type', 'object'),
+         where 'type' is the type of forcefield, and 'object' is a
+      """
+
+      super(InputForces, self).fetch()
+      flist = [ (n, f.fetch()) for (n, f) in self.extra ]
+
+      return flist
+
+   def store(self, flist):
+      """Stores a list of the output objects, creating a sequence of
+      dynamic containers.
+
+      Args:
+         flist: A list of tuples, with each tuple being of the form
+         ('type', 'object') where 'type' is the type of forcefield
+         and 'object' is a forcefield object of that type.
+      """
+
+      super(InputForces, self).store()
+      self.extra = []
+
+      for el in flist:
+         if el[0]=="socket":
+            iff = InputFBSocket()
+            iff.store(el[1])
+            self.extra.append(("socket", iff))
diff --git a/tools/i-pi/ipi/inputs/initializer.py b/tools/i-pi/ipi/inputs/initializer.py
new file mode 100644
index 0000000000000000000000000000000000000000..f78a617e2a5c0316df6676a46ad2653293e5d3fa
--- /dev/null
+++ b/tools/i-pi/ipi/inputs/initializer.py
@@ -0,0 +1,406 @@
+"""Deals with creating the initiliazer class.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Classes:
+   InputInitializer: Initializes the classes that initialize the simulation
+      data.
+   InputInitFile: Initializes the classes that initialize the simulation data
+      from a file. Rather than initializing one piece of data, everything that
+      can be initialized from that file will be.
+   InputInitPositions: Initializes the positions.
+   InputInitMomenta: Initializes the momenta.
+   InputInitVelocities: Initializes the velocities.
+   InputInitMasses: Initializes the masses.
+   InputInitLabels: Initializes the atom labels.
+   InputInitCell: Initializes the cell.
+   InputInitThermo: Initializes the thermostat.
+   InputInitBase: The base class for all Initializer objects.
+   InputInitIndexed: The class for all Initializer objects which can be called
+      to initialize data for a particular atom or bead.
+"""
+
+import numpy as np
+from copy import copy, deepcopy
+import ipi.utils.mathtools as mt
+import ipi.engine.initializer as ei
+from ipi.utils.inputvalue import *
+from ipi.inputs.beads import InputBeads
+from ipi.inputs.cell import InputCell
+from ipi.utils.io import io_xml
+from ipi.utils.messages import verbosity, warning
+
+__all__ = ['InputInitializer', 'InputInitFile', 'InputInitPositions', 'InputInitMomenta', 'InputInitVelocities', 'InputInitMasses', 'InputInitLabels', 'InputInitCell', 'InputInitThermo']
+
+class InputInitBase(InputValue):
+   """Base class to handle initialization.
+
+   Attributes:
+      mode: The type of data to be initialized from.
+      _initclass: Which InputInit class to use to read the data.
+      _storageclass: Which data type to use to hold the data.
+   """
+
+   attribs = deepcopy(InputValue.attribs)
+   attribs["mode"] =     (InputAttribute,{ "dtype" : str, "default": "other", "help": "The input data format. 'xyz' and 'pdb' stand for xyz and pdb input files respectively. 'chk' stands for initialization from a checkpoint file. 'manual' means that the value to initialize from is giving explicitly as a vector. 'thermal' means that the data is to be generated from a Maxwell-Boltzmann distribution at the given temperature.", "options": None } )
+
+   default_label = "INITBASE"
+   default_help = "This is the base class for initialization. Initializers for different aspects of the simulation can be inherit for it for the base methods."
+
+   _initclass    = ei.InitBase
+   _storageclass = float
+
+   def __init__(self, help=None, default=None, dtype=None, options=None, dimension=None):
+      """Initializes InputInitFile.
+
+      Just calls the parent initialize function with appropriate arguments.
+      """
+
+      super(InputInitBase,self).__init__(dtype=str, dimension=dimension, default=default, options=options, help=help)
+
+   def store(self, ibase):
+      """Takes a InitBase instance and stores a minimal representation of it.
+
+      Args:
+         ibase: An input base object.
+      """
+
+      if ibase.mode == "manual":
+         if hasattr(value, __len__):
+            value = io_xml.write_list(ibase.value)
+         else:  # if it's a single value then just write the value
+            value = io_xml.write_type(self._storageclass, ibase.value)
+      else:  # just store the value as a string
+         value = ibase.value
+
+      super(InputInitBase,self).store(value, units=ibase.units)
+
+      for k in self.attribs:  # store additional attributes from the input class
+         self.__dict__[k].store(ibase.__dict__[k])
+
+   def getval(self):
+      """Calculates the value from the data supplied in the xml file.
+
+      Either reads the string from the input file as an array of numbers,
+      or as a string specifying either a file name or a single value.
+      """
+
+      value = super(InputInitBase,self).fetch()
+      if self.mode.fetch() == "manual":
+         if '[' in value and ']' in value: # value appears to be a list
+            if self._storageclass is float:
+               value = io_xml.read_array(np.float, value)
+            else:
+               value = io_xml.read_list(value)
+         else:
+            value = io_xml.read_type(self._storageclass, value)
+      else:
+         value = str(value)  # typically this will be a no-op
+      return value
+
+   def fetch(self, initclass=None):
+      """Creates an input base object.
+
+      Returns:
+         An input base object.
+      """
+
+      rdict = {}
+      for k in self.attribs:
+         rdict[k] = self.__dict__[k].fetch()
+
+      if initclass is None: # allows for some flexibility in return class
+         initclass = self._initclass
+
+      return initclass(value=self.getval(), **rdict)
+
+
+class InputInitFile(InputInitBase):
+   """Class to handle initialization from a file."""
+
+   attribs = deepcopy(InputInitBase.attribs)
+   attribs["mode"][1]["default"] = "chk"
+   attribs["mode"][1]["options"] = ["xyz", "pdb", "chk"]
+   attribs["mode"][1]["help"] = "The input data format. 'xyz' and 'pdb' stand for xyz and pdb input files respectively. 'chk' stands for initialization from a checkpoint file."
+
+   default_label = "INITFILE"
+   default_help = "This is the class to initialize from file."
+
+
+class InputInitThermo(InputInitBase):
+   """Class to handle initialization of the thermostat."""
+
+   attribs = deepcopy(InputInitBase.attribs)
+   attribs["mode"][1]["default"] = "manual"
+   attribs["mode"][1]["options"] = ["chk", "manual"]
+   attribs["mode"][1]["help"] = "'chk' stands for initialization from a checkpoint file. 'manual' means that the value to initialize from is giving explicitly as a vector."
+
+   default_label = "INITTHERMO"
+   default_help = "This is the class to initialize the thermostat (ethermo and fictitious momenta)."
+
+
+class InputInitIndexed(InputInitBase):
+   """Class to handle initialization of properties which the value of each
+   bead and atom can be specified.
+
+   Attributes:
+      index: Which atom to initialize the value of.
+      bead: Which bead to initialize the value of.
+   """
+
+   attribs = deepcopy(InputInitBase.attribs)
+   attribs["index"] =     (InputAttribute,{ "dtype" : int, "default": -1, "help": "The index of the atom for which the value will be set. If a negative value is specified, then all atoms are assumed." } )
+   attribs["bead"]  =     (InputAttribute,{ "dtype" : int, "default": -1, "help": "The index of the bead for which the value will be set. If a negative value is specified, then all beads are assumed." } )
+
+   default_label = "INITINDEXED"
+   default_help = "This is a helper class to initialize with an index."
+
+
+class InputInitPositions(InputInitIndexed):
+   """Class to handle initialization of the positions."""
+
+   attribs = deepcopy(InputInitIndexed.attribs)
+   attribs["mode"][1]["default"] = "chk"
+   attribs["mode"][1]["options"] = ["manual", "xyz", "pdb", "chk"]
+   attribs["mode"][1]["help"] = "The input data format. 'xyz' and 'pdb' stand for xyz and pdb input files respectively. 'chk' stands for initialization from a checkpoint file. 'manual' means that the value to initialize from is giving explicitly as a vector."
+
+   default_label = "INITPOSITIONS"
+   default_help = "This is the class to initialize positions."
+   _initclass = ei.InitIndexed
+
+
+class InputInitMomenta(InputInitPositions):
+   """Class to handle initialization of the momenta."""
+
+   attribs = deepcopy(InputInitPositions.attribs)
+   attribs["mode"][1]["options"].append( "thermal" )
+   attribs["mode"][1]["help"] = "The input data format. 'xyz' and 'pdb' stand for xyz and pdb input files respectively. 'chk' stands for initialization from a checkpoint file. 'manual' means that the value to initialize from is giving explicitly as a vector. 'thermal' means that the data is to be generated from a Maxwell-Boltzmann distribution at the given temperature."
+
+   default_label = "INITMOMENTA"
+   default_help = "This is the class to initialize momenta."
+
+   def fetch(self):
+      """Creates an momentum initializer object.
+
+      Note that the momenta can be initialized by a single value, specifying
+      the temperature at which to thermalize the momenta.
+      """
+
+      if self.mode.fetch() == "thermal":
+         return self._initclass(value=float(InputValue.fetch(self)),  mode=self.mode.fetch(), units=self.units.fetch(), index=self.index.fetch(), bead=self.bead.fetch())
+      else:
+         return super(InputInitMomenta,self).fetch()
+
+
+class InputInitVelocities(InputInitMomenta):
+   """Class to handle initialization of the velocities."""
+
+   attribs = deepcopy(InputInitMomenta.attribs)
+
+   default_label = "INITVELOCITIES"
+   default_help = "This is the class to initialize velocities."
+
+
+class InputInitMasses(InputInitPositions):
+   """Class to handle initialization of the masses."""
+
+   attribs = deepcopy(InputInitPositions.attribs)
+
+   default_label = "INITMASSES"
+   default_help = "This is the class to initialize atomic masses."
+
+
+class InputInitLabels(InputInitPositions):
+   """Class to handle initialization of the atom labels."""
+
+   attribs = deepcopy(InputInitPositions.attribs)
+
+   default_label = "INITLABELS"
+   default_help = "This is the class to initialize atomic labels."
+
+   _storageclass = str
+
+
+class InputInitCell(InputInitBase):
+   """Class to handle initialization of the cell."""
+
+   attribs = deepcopy(InputInitBase.attribs)
+   attribs["mode"] = (InputAttribute, { "dtype"  : str,
+                                        "default": "manual",
+                                        "options": ["manual", "pdb", "chk", "abc", "abcABC"],
+                                        "help"   : "This decides whether the system box is created from a cell parameter matrix, or from the side lengths and angles between them. If 'mode' is 'manual', then 'cell' takes a 9-elements vector containing the cell matrix (row-major). If 'mode' is 'abcABC', then 'cell' takes an array of 6 floats, the first three being the length of the sides of the system parallelopiped, and the last three being the angles (in degrees) between those sides. Angle A corresponds to the angle between sides b and c, and so on for B and C. If mode is 'abc', then this is the same as for 'abcABC', but the cell is assumed to be orthorhombic. 'pdb' and 'chk' read the cell from a PDB or a checkpoint file, respectively."} )
+
+   default_label = "INITCELL"
+   default_help = "This is the class to initialize cell."
+
+   def fetch(self):
+      """Creates a cell initializer object.
+
+      Note that the cell can be initialized from the lengths of the sides and
+      the angles between them instead of by a vector, as specified by the
+      'abc' or 'abcABC' modes.
+      """
+
+      mode = self.mode.fetch()
+
+      ibase = super(InputInitCell,self).fetch()
+      if mode == "abc" or mode == "abcABC":
+
+         h = io_xml.read_array(np.float, ibase.value)
+
+         if mode == "abc":
+            if h.size != 3:
+               raise ValueError("If you are initializing cell from cell side lengths you must pass the 'cell' tag an array of 3 floats.")
+            else:
+               h = mt.abc2h(h[0], h[1], h[2], np.pi/2, np.pi/2, np.pi/2)
+         elif mode == "abcABC":
+            if h.size != 6:
+               raise ValueError("If you are initializing cell from cell side lengths and angles you must pass the 'cell' tag an array of 6 floats.")
+            else:
+               h = mt.abc2h(h[0], h[1], h[2], h[3]*np.pi/180.0, h[4]*np.pi/180.0, h[5]*np.pi/180.0)
+
+         h.shape = (9,)
+         ibase.value = h
+         mode = "manual"
+
+      if mode == "manual":
+         h = ibase.value
+         if h.size != 9:
+               raise ValueError("Cell objects must contain a 3x3 matrix describing the cell vectors.")
+
+         if not (h[3] == 0.0 and h[6] == 0.0 and h[7] == 0.0):
+            warning("Cell vector matrix must be upper triangular, all elements below the diagonal being set to zero.", verbosity.low)
+            h[3] = h[6] = h[7] = 0
+         ibase.value = h
+
+      return self._initclass(value=ibase.value, mode=mode, units=self.units.fetch())
+
+
+class InputInitializer(Input):
+   """Input class to handle initialization.
+
+   Attributes:
+      nbeads: The number of beads to be used in the simulation.
+
+   Dynamic fields:
+      positions: An object to initialize the positions from.
+      velocities: An object to initialize the velocities from.
+      momenta: An object to initialize the momenta from.
+      cell: An object to initialize the cell from.
+      masses: An object to initialize the masses from.
+      labels: An object to initialize the labels from.
+      gle: An object to initialize the GLE matrices from.
+      file: A file from which to initialize multiple properties from. Anything
+         that can be initialized either directly or indirectly from this file
+         will be.
+   """
+
+   attribs = { "nbeads"    : (InputAttribute, {"dtype"     : int,
+                                        "help"      : "The number of beads. Will override any provision from inside the initializer. A ring polymer contraction scheme is used to scale down the number of beads if required. If instead the number of beads is scaled up, higher normal modes will be initialized to zero."})
+            }
+
+   dynamic = {
+           "positions"  : (InputInitPositions,  { "help" : "Initializes atomic positions. Will take a 'units' attribute of dimension 'length'"}),
+           "velocities" : (InputInitVelocities, { "help" : "Initializes atomic velocities. Will take a 'units' attribute of dimension 'velocity'" }),
+           "momenta"    : (InputInitMomenta,    { "help" : "Initializes atomic momenta. Will take a 'units' attribute of dimension 'momentum'" }),
+           "masses"     : (InputInitMasses,     { "help" : "Initializes atomic masses. Will take a 'units' attribute of dimension 'mass'" }),
+           "labels"     : (InputInitLabels,     { "help" : "Initializes atomic labels" }),
+           "cell"       : (InputInitCell,       { "help" : "Initializes the configuration of the cell. Will take a 'units' attribute of dimension 'length'" }),
+           "file"       : (InputInitFile,       { "help" : "Initializes everything possible for the given mode. Will take a 'units' attribute of dimension 'length'. The unit conversion will only be applied to the positions and cell parameters." }),
+           "gle"        : (InputInitThermo,     { "help" : "Initializes the additional momenta in a GLE thermostat." })
+            }
+
+   default_help = "Specifies the number of beads, and how the system should be initialized."
+   default_label = "INITIALIZER"
+
+   def write(self,  name="", indent=""):
+      """Overloads Input write() function so that we never write out
+      InputInitializer to restart files.
+
+      Returns:
+         An empty string.
+      """
+
+      return ""
+
+   def store(self, ii):
+      """Takes a Initializer instance and stores a minimal representation of it.
+
+      Args:
+         ii: An initializer object.
+      """
+
+      self.extra = []
+
+      for (k, el) in ii.queue:
+         if k == "positions" :
+            ip = InputInitPositions()
+            ip.store(el)
+         elif k == "velocities" :
+            ip = InputInitVelocities()
+            ip.store(el)
+         elif k == "momenta" :
+            ip = InputInitMomenta()
+            ip.store(el)
+         elif k == "masses" :
+            ip = InputInitMasses()
+            ip.store(el)
+         elif k == "labels" :
+            ip = InputInitLabels()
+            ip.store(el)
+         elif k == "cell" :
+            ip = InputInitCell()
+            ip.store(el)
+         elif k == "gle" :
+            ip = InputInitThermo()
+            ip.store(el)
+         self.extra.append((k, ip))
+
+      self.nbeads.store(ii.nbeads)
+
+   def fetch(self):
+      """Creates an initializer object.
+
+      Returns:
+         An initializer object.
+      """
+
+      super(InputInitializer,self).fetch()
+
+      initlist = []
+      for (k,v) in self.extra:
+         if v.mode.fetch() == "chk" and v.fetch(initclass=ei.InitIndexed).units != "":
+            raise ValueError("Cannot specify units for initialization from a checkpoint file - units should be defined _inside_ the file.")
+         if k == "file":
+            mode = v.mode.fetch()
+            if mode == "xyz" or mode == "manual" or mode == "pdb" or mode == "chk":
+               initlist.append( ( "positions", v.fetch(initclass=ei.InitIndexed) ) )
+            if mode == "xyz" or mode == "pdb" or mode == "chk":
+               rm = v.fetch(initclass=ei.InitIndexed)
+               rm.units = ""
+               initlist.append( ( "masses",   rm ) )
+               initlist.append( ( "labels",   v.fetch(initclass=ei.InitIndexed) ) )
+            if mode == "pdb" or mode == "chk":
+               initlist.append( ( "cell", v.fetch(initclass=ei.InitIndexed) ) )
+            if mode == "chk":
+               rm = v.fetch(initclass=ei.InitIndexed)
+               rm.units = ""
+               initlist.append( ( "momenta", rm ) )
+         else:
+            initlist.append( (k, v.fetch()) )
+
+      return ei.Initializer(self.nbeads.fetch(), initlist )
diff --git a/tools/i-pi/ipi/inputs/interface.py b/tools/i-pi/ipi/inputs/interface.py
new file mode 100644
index 0000000000000000000000000000000000000000..2ff092a6655f94b7ae76361401c1ae76ef4ba0d2
--- /dev/null
+++ b/tools/i-pi/ipi/inputs/interface.py
@@ -0,0 +1,125 @@
+"""Deals with creating the interface between the wrapper and the socket.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Classes:
+   InputInterface: Deals with creating the Interface object from a file, and
+      writing the checkpoints.
+"""
+
+__all__ = [ 'InputInterfaceSocket' ]
+
+import socket, select, threading, signal, string, os, time
+import numpy as np
+from ipi.utils.messages import verbosity, warning
+from ipi.utils.inputvalue import *
+from ipi.interfaces.sockets import *
+
+
+class InputInterfaceSocket(Input):
+   """Interface input class.
+
+   Handles generating the apporopriate interface class from the xml
+   input file, and generating the xml checkpoin tags and data from an
+   instance of the object.
+
+   Attributes:
+      mode: A string giving the type of socket used.
+      pbc: A boolean giving whether the atom positions will be folded back
+         into the unit cell before being sent through the socket or not.
+
+   Fields:
+      address: A string giving the host name.
+      port: An integer giving the port used by the socket.
+      slots: An integer giving the maximum allowed backlog of queued clients.
+      latency: A float giving the number of seconds that the interface waits
+         before updating the client list.
+      timeout: A float giving a number of seconds after which a calculation core
+         is considered dead. Defaults to zero, i.e. no timeout.
+   """
+
+   fields = {"address": (InputValue, {"dtype"   : str,
+                                      "default" : "localhost",
+                                      "help"    : "This gives the server address that the socket will run on." } ),
+             "port":    (InputValue, {"dtype"   : int,
+                                      "default" : 65535,
+                                      "help"    : "This gives the port number that defines the socket."} ),
+             "slots":   (InputValue, {"dtype"   : int,
+                                      "default" : 4,
+                                      "help"    : "This gives the number of client codes that can queue at any one time."} ),
+             "latency": (InputValue, {"dtype"   : float,
+                                      "default" : 1e-3,
+                                      "help"    : "This gives the number of seconds between each check for new clients."} ),
+             "timeout": (InputValue, {"dtype"   : float,
+                                      "default" : 0.0,
+                                      "help"    : "This gives the number of seconds before assuming a calculation has died. If 0 there is no timeout." } )}
+   attribs = { "mode": (InputAttribute, {"dtype"    : str,
+                                     "options"  : [ "unix", "inet" ],
+                                     "default"  : "inet",
+                                     "help"     : "Specifies whether the driver interface will listen onto a internet socket [inet] or onto a unix socket [unix]." } ),
+               "pbc":  ( InputAttribute, { "dtype"   : bool,
+                                         "default" : True,
+                                         "help"    : "Applies periodic boundary conditions to the atoms coordinates before passing them on to the driver code." })
+              }
+
+   default_help = "Specifies the parameters for the socket interface."
+   default_label = "INTERFACE"
+
+   def store(self, iface):
+      """Takes an Interface instance and stores a minimal representation of it.
+
+      Args:
+         iface: An interface object.
+      """
+
+      super(InputInterfaceSocket,self).store(iface)
+      self.latency.store(iface.latency)
+      self.mode.store(iface.mode)
+      self.address.store(iface.address)
+      self.port.store(iface.port)
+      self.slots.store(iface.slots)
+      self.timeout.store(iface.timeout)
+      self.pbc.store(iface.dopbc)
+
+   def fetch(self):
+      """Creates an InterfaceSocket object.
+
+      Returns:
+         An interface object with the appropriate socket given the attributes
+         of the InputInterfaceSocket object.
+      """
+
+      super(InputInterfaceSocket,self).fetch()
+      return InterfaceSocket(address=self.address.fetch(), port=self.port.fetch(),
+            slots=self.slots.fetch(), mode=self.mode.fetch(),
+            latency=self.latency.fetch(), timeout=self.timeout.fetch(), dopbc=self.pbc.fetch())
+
+   def check(self):
+      """Function that deals with optional arguments."""
+
+      super(InputInterfaceSocket,self).check()
+      if self.port.fetch() < 1 or self.port.fetch() > 65535:
+         raise ValueError("Port number " + str(self.port.fetch()) + " out of acceptable range.")
+      elif self.port.fetch() < 1025:
+         warning("Low port number being used, this may interrupt important system processes.", verbosity.low)
+
+      if self.slots.fetch() < 1 or self.slots.fetch() > 5:
+         raise ValueError("Slot number " + str(self.slots.fetch()) + " out of acceptable range.")
+      if self.latency.fetch() < 0:
+         raise ValueError("Negative latency parameter specified.")
+      if self.timeout.fetch() < 0.0:
+         raise ValueError("Negative timeout parameter specified.")
diff --git a/tools/i-pi/ipi/inputs/normalmodes.py b/tools/i-pi/ipi/inputs/normalmodes.py
new file mode 100644
index 0000000000000000000000000000000000000000..0e46051049e875d2d4fa3b810014e16b5b103822
--- /dev/null
+++ b/tools/i-pi/ipi/inputs/normalmodes.py
@@ -0,0 +1,84 @@
+"""Deals with creating the normal mode representation arrays.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Classes:
+   InputNormalModes: Deals with creating the normal mode objects.
+"""
+
+import numpy as np
+from copy import copy
+from ipi.engine.normalmodes import *
+from ipi.utils.inputvalue import *
+from ipi.utils.units import *
+
+__all__ = ['InputNormalModes']
+
+class InputNormalModes(InputArray):
+   """ Storage class for NormalModes engine.
+
+   Describes how normal-modes transformation and integration should be
+   performed.
+
+   Attributes:
+      mode: Specifies the method by which the dynamical masses are created.
+      transform: Specifies whether the normal mode calculation will be
+         done using a FFT transform or a matrix multiplication.
+   """
+
+   attribs = copy(InputArray.attribs)
+   attribs["mode"] = (InputAttribute, {"dtype"   : str,
+                                       "default" : "rpmd",
+                                       "help"    : "Specifies the technique to be used to calculate the dynamical masses. 'rpmd' simply assigns the bead masses the physical mass. 'manual' sets all the normal mode frequencies except the centroid normal mode manually. 'pa-cmd' takes an argument giving the frequency to set all the non-centroid normal modes to. 'wmax-cmd' is similar to 'pa-cmd', except instead of taking one argument it takes two ([wmax,wtarget]). The lowest-lying normal mode will be set to wtarget for a free particle, and all the normal modes will coincide at frequency wmax. ",
+                                       "options" : ['pa-cmd', 'wmax-cmd', 'manual', 'rpmd']})
+   attribs["transform"] = (InputValue,{"dtype"   : str,
+                                       "default" : "fft",
+                                       "help"    : "Specifies whether to calculate the normal mode transform using a fast Fourier transform or a matrix multiplication. For small numbers of beads the matrix multiplication may be faster.",
+                                       "options" : ['fft', 'matrix']})
+
+   default_help = "Deals with the normal mode transformations, including the adjustment of bead masses to give the desired ring polymer normal mode frequencies if appropriate. Takes as arguments frequencies, of which different numbers must be specified and which are used to scale the normal mode frequencies in different ways depending on which 'mode' is specified."
+   default_label = "NORMALMODES"
+
+   def __init__(self, help=None, dimension=None, default=None, dtype=None):
+      """ Initializes InputNormalModes.
+
+      Just calls the parent initialization function with appropriate arguments.
+      """
+
+      super(InputNormalModes,self).__init__(help=help, default=default, dtype=float, dimension="frequency")
+
+   def store(self, nm):
+      """Takes a normal modes instance and stores a minimal representation
+      of it.
+
+      Args:
+         nm: A normal modes object.
+      """
+
+      super(InputNormalModes,self).store(nm.nm_freqs)
+      self.mode.store(nm.mode)
+      self.transform.store(nm.transform_method)
+
+   def fetch(self):
+      """Creates a normal modes object.
+
+      Returns:
+         A normal modes object.
+      """
+
+      super(InputNormalModes,self).check()
+      return NormalModes(self.mode.fetch(), self.transform.fetch(), super(InputNormalModes,self).fetch() )
diff --git a/tools/i-pi/ipi/inputs/outputs.py b/tools/i-pi/ipi/inputs/outputs.py
new file mode 100644
index 0000000000000000000000000000000000000000..5141c79beb5f3110fce5b3844b4d943f937d2d85
--- /dev/null
+++ b/tools/i-pi/ipi/inputs/outputs.py
@@ -0,0 +1,323 @@
+"""Deals with creating the output objects.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Classes:
+   InputOutputs: Creates a list of all the output objects.
+   InputProperties: Deals with property output.
+   InputTrajectory: Deals with trajectory output.
+   InputCheckpoint: Deals with restart file output.
+"""
+import numpy as np
+from copy import copy
+import ipi.engine.outputs
+from ipi.utils.depend import *
+from ipi.utils.inputvalue import *
+from ipi.engine.properties import getkey
+
+__all__=['InputOutputs', 'InputProperties', 'InputTrajectory',
+         'InputCheckpoint']
+
+class InputProperties(InputArray):
+   """Simple input class to describe output for properties.
+
+   Storage class for PropertyOutput.
+
+   Attributes:
+      filename: The name of the file to output to.
+      stride: The number of steps that should be taken between outputting the
+         data to file.
+      flush: An integer describing how often the output streams are flushed,
+         so that it doesn't wait for the buffer to fill before outputting to
+         file.
+   """
+
+   default_help = """This class deals with the output of properties to one file. Between each property tag there should be an array of strings, each of which specifies one property to be output."""
+   default_label = "PROPERTIES"
+
+   attribs = copy(InputArray.attribs)
+   attribs["filename"] = (InputAttribute,{ "dtype" : str, "default": "out",
+                                           "help": "A string to specify the name of the file that is output. The file name is given by 'prefix'.'filename' + format_specifier. The format specifier may also include a number if multiple similar files are output."} )
+   attribs["stride"] = (InputAttribute,{ "dtype" : int, "default": 1,
+                                         "help": "The number of steps between successive writes." } )
+   attribs["flush"] = (InputAttribute, {"dtype"    : int,    "default"  : 1,
+                                   "help"     : "How often should streams be flushed. 1 means each time, zero means never." })
+
+   def __init__(self, help=None,  default=None, dtype=None, dimension=None):
+      """Initializes InputProperties.
+
+      Just calls the parent initialization function with appropriate arguments.
+      """
+
+      super(InputProperties,self).__init__(help=help, default=default, dtype=str, dimension=dimension)
+
+   def fetch(self):
+      """Returns a PropertyOutput object."""
+
+      return ipi.engine.outputs.PropertyOutput(filename=self.filename.fetch(),
+        stride=self.stride.fetch(), flush=self.flush.fetch(), outlist=super(InputProperties,self).fetch())
+
+   def store(self, prop):
+      """Stores a PropertyOutput object."""
+
+      super(InputProperties,self).store(prop.outlist)
+      self.stride.store(prop.stride)
+      self.flush.store(prop.flush)
+      self.filename.store(prop.filename)
+
+   def check(self):
+      """Checks for optional parameters."""
+
+      super(InputProperties,self).check()
+      if self.stride.fetch() < 0:
+         raise ValueError("The stride length for the properties file output must be positive.")
+
+
+class InputTrajectory(InputValue):
+   """Simple input class to describe output for trajectories.
+
+   Storage class for TrajectoryOutput.
+
+   Attributes:
+      filename: The (base) name of the file to output to.
+      stride: The number of steps that should be taken between outputting the
+         data to file.
+      format: The format of the trajectory output file.
+      cell_units: The units that the cell parameters are given in.
+      bead: If the trajectory is a per-bead property, this can be used to
+         specify a single bead to output. If negative, it defaults to
+         the centroid.
+      flush: An integer describing how often the output streams are flushed,
+         so that it doesn't wait for the buffer to fill before outputting to
+         file.
+   """
+
+   default_help = """This class defines how one trajectory file should be output. Between each trajectory tag one string should be given, which specifies what data is to be output."""
+   default_label = "TRAJECTORY"
+
+   attribs = copy(InputValue.attribs)
+   attribs["filename"] = (InputAttribute,{ "dtype" : str, "default": "traj",
+                                           "help": "A string to specify the name of the file that is output. The file name is given by 'prefix'.'filename' + format_specifier. The format specifier may also include a number if multiple similar files are output."} )
+   attribs["stride"] = (InputAttribute,{ "dtype" : int, "default": 1,
+                                         "help": "The number of steps between successive writes." } )
+   attribs["format"] = (InputAttribute,{ "dtype" : str, "default": "xyz",
+                                       "help": "The output file format.",
+                                       "options": ['xyz', 'pdb'] } )
+   attribs["cell_units"] = (InputAttribute,{ "dtype" : str, "default": "",
+                                       "help": "The units for the cell dimensions." } )
+   attribs["bead"] = (InputAttribute,{ "dtype" : int, "default": -1,
+                                         "help": "Print out only the specified bead. A negative value means print all." } )
+   attribs["flush"] = (InputAttribute, {"dtype"    : int,    "default"  : 1,
+                                   "help"     : "How often should streams be flushed. 1 means each time, zero means never." })
+
+   def __init__(self, help=None,  default=None, dtype=None, dimension=None):
+      """Initializes InputTrajectory.
+
+      Just calls the parent initialization function with appropriate arguments.
+      """
+
+      super(InputTrajectory,self).__init__(help=help, default=default, dtype=str, dimension=dimension)
+
+   def fetch(self):
+      """Returns a TrajectoryOutput object."""
+
+      return ipi.engine.outputs.TrajectoryOutput(filename=self.filename.fetch(), stride=self.stride.fetch(),
+               flush=self.flush.fetch(), what=super(InputTrajectory,self).fetch(),
+               format=self.format.fetch(), cell_units=self.cell_units.fetch(), ibead=self.bead.fetch())
+
+   def store(self, traj):
+      """Stores a PropertyOutput object."""
+
+      super(InputTrajectory,self).store(traj.what)
+      self.stride.store(traj.stride)
+      self.flush.store(traj.flush)
+      self.filename.store(traj.filename)
+      self.format.store(traj.format)
+      self.cell_units.store(traj.cell_units)
+      self.bead.store(traj.ibead)
+
+   def check(self):
+      """Checks for optional parameters."""
+
+      super(InputTrajectory,self).check()
+      if self.stride.fetch() < 0:
+         raise ValueError("The stride length for the trajectory file output must be positive.")
+
+
+class InputCheckpoint(InputValue):
+   """Simple input class to describe output for properties.
+
+   Storage class for CheckpointOutput.
+
+   Attributes:
+      filename: The (base) name of the file to output to.
+      stride: The number of steps that should be taken between outputting the
+         data to file.
+      overwrite: whether checkpoints should be overwritten, or multiple
+         files output.
+   """
+
+   default_help = """This class defines how a checkpoint file should be output. Optionally, between the checkpoint tags, you can specify one integer giving the current step of the simulation. By default this integer will be zero."""
+   default_label = "CHECKPOINT"
+
+   attribs=copy(InputValue.attribs)
+   attribs["filename"] = (InputAttribute,{ "dtype" : str, "default": "restart",
+                                           "help": "A string to specify the name of the file that is output. The file name is given by 'prefix'.'filename' + format_specifier. The format specifier may also include a number if multiple similar files are output."} )
+   attribs["stride"] = (InputAttribute,{ "dtype" : int, "default": 1,
+                                         "help": "The number of steps between successive writes." } )
+   attribs["overwrite"] = (InputAttribute,{ "dtype" : bool, "default": True,
+                                            "help": "This specifies whether or not each consecutive checkpoint file will overwrite the old one."} )
+
+   def __init__(self, help=None,  default=None, dtype=None, dimension=None):
+      """Initializes InputCheckpoint.
+
+      Just calls the parent initialization function with appropriate arguments.
+      """
+
+      super(InputCheckpoint,self).__init__(help=help, default=default, dtype=int, dimension=dimension)
+
+   def fetch(self):
+      """Returns a CheckpointOutput object."""
+
+      step = super(InputCheckpoint,self).fetch()
+      return ipi.engine.outputs.CheckpointOutput(self.filename.fetch(), self.stride.fetch(), self.overwrite.fetch(), step=step )
+
+   def parse(self, xml=None, text=""):
+      """Overwrites the standard parse function so that we can specify this tag
+      in the input without any data.
+
+      We can use the syntax <checkpoint /> to do this
+
+      Args:
+         xml: An xml node containing all the data for the parent tag.
+         text: The data to read the data from. Will be None if we have not
+            specified any data.
+      """
+
+      # just a quick hack to allow an empty element
+      try:
+         super(InputCheckpoint,self).parse(xml,text)
+      except: #TODO make this except a specific exception, not every one
+         self.value = 0  #This could hide actual errors, at least in theory.
+
+   def store(self, chk):
+      """Stores a CheckpointOutput object."""
+
+      super(InputCheckpoint,self).store(chk.step)
+      self.stride.store(chk.stride)
+      self.filename.store(chk.filename)
+      self.overwrite.store(chk.overwrite)
+
+   def check(self):
+      """Checks for optional parameters."""
+
+      super(InputCheckpoint,self).check()
+      if self.stride.fetch() < 0:
+         raise ValueError("The stride length for the checkpoint file output must be positive.")
+
+
+class InputOutputs(Input):
+   """ List of outputs input class.
+
+   An example of a dynamic input class: a variable number of tags might be
+   present, corresponding to different output requests. This allows for
+   instance to print multiple property outputs, with different content
+   and/or output frequency.
+
+   Attributes:
+      prefix: A string that will be appended to all output files from this
+         simulation.
+
+   Dynamic fields:
+      trajectory: Specifies a trajectory to be output
+      properties: Specifies some properties to be output.
+      checkpoint: Specifies a checkpoint file to be output.
+   """
+
+   attribs = { "prefix" : ( InputAttribute, { "dtype" : str,
+                                          "default"  : "i-pi",
+                                          "help"     : "A string that will be prepended to each output file name. The file name is given by 'prefix'.'filename' + format_specifier. The format specifier may also include a number if multiple similar files are output." })
+             }
+
+   dynamic = {  "properties" : (InputProperties, { "help" : "Each of the properties tags specify how to create a file in which one or more properties are written, one line per frame. " } ),
+               "trajectory" : (InputTrajectory, { "help" : "Each of the trajectory tags specify how to create a trajectory file, containing a list of per-atom coordinate properties. " } ),
+               "checkpoint" : (InputCheckpoint, { "help" : "Each of the checkpoint tags specify how to create a checkpoint file, which can be used to restart a simulation. " } ),
+            }
+
+   default_help = """This class defines how properties, trajectories and checkpoints should be output during the simulation. May contain zero, one or many instances of properties, trajectory or checkpoint tags, each giving instructions on how one output file should be created and managed."""
+   default_label = "OUTPUTS"
+
+   @classmethod
+   def make_default(cls):
+      """Used to make the default value of the outputs class for use when no
+      output is specified.
+
+      Needed since this is a fairly complicated default, with many mutable
+      objects, and the default has to be generated by a function that does not
+      use any mutable objects as arguments.
+      """
+
+      return [ ipi.engine.outputs.PropertyOutput(filename="i-pi.md", stride=10, outlist=[ "time", "step", "conserved", "temperature", "potential", "kinetic_cv" ] ),
+               ipi.engine.outputs.TrajectoryOutput(filename="i-pi.pos", stride=100, what="positions", format="xyz"),
+               ipi.engine.outputs.CheckpointOutput(filename="i-pi.checkpoint", stride=1000, overwrite=True)]
+
+   def fetch(self):
+      """Returns a list of the output objects included in this dynamic
+      container.
+
+      Returns:
+         A list of tuples, with each tuple being of the form ('type', 'object')
+         where 'type' is the type of output object and 'object' is a particular
+         object of that type.
+      """
+
+      super(InputOutputs, self).fetch()
+      outlist = [ p.fetch() for (n, p) in self.extra ]
+      prefix = self.prefix.fetch()
+      if not prefix == "":
+         for p in outlist:
+            p.filename = prefix + "." + p.filename
+
+      return outlist
+
+   def store(self, plist):
+      """ Stores a list of the output objects, creating a sequence of
+      dynamic containers.
+
+      Args:
+         plist: A list of tuples, with each tuple being of the form
+            ('type', 'object') where 'type' is the type of forcefield and
+            'object' is a particular object of that type.
+      """
+
+      super(InputOutputs, self).store()
+      self.extra = []
+
+      self.prefix.store("")
+      for el in plist:
+         if (isinstance(el, ipi.engine.outputs.PropertyOutput)):
+            ip = InputProperties()
+            ip.store(el)
+            self.extra.append(("properties", ip))
+         elif (isinstance(el, ipi.engine.outputs.TrajectoryOutput)):
+            ip = InputTrajectory()
+            ip.store(el)
+            self.extra.append(("trajectory", ip))
+         elif (isinstance(el, ipi.engine.outputs.CheckpointOutput)):
+            ip = InputCheckpoint()
+            ip.store(el)
+            self.extra.append(("checkpoint", ip))
diff --git a/tools/i-pi/ipi/inputs/prng.py b/tools/i-pi/ipi/inputs/prng.py
new file mode 100644
index 0000000000000000000000000000000000000000..58faaca5f0d0940ec60e655e267031b1b58dbbd4
--- /dev/null
+++ b/tools/i-pi/ipi/inputs/prng.py
@@ -0,0 +1,101 @@
+"""Deals with creating the random number generator.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Generates a random number generator either from a seed number, or from a
+state vector.
+
+Classes:
+   InputRandom: Deals with creating the Random object from a file, and
+      writing the checkpoints.
+"""
+
+__all__ = ['InputRandom']
+
+import numpy as np
+from ipi.utils.prng import *
+from ipi.utils.inputvalue import *
+
+class InputRandom(Input):
+   """Random input class.
+
+   Handles generating the appropriate random number class from the xml
+   input file, and generating the xml checkpoint tags and data from an
+   instance of the object.
+
+   Attributes:
+      seed: An optional integer giving a seed to initialise the random number
+         generator from. Defaults to 123456.
+      state: An optional array giving the state of the random number generator.
+         Defaults to an empty array.
+      has_gauss: An optional integer giving whether there is a stored
+         Gaussian number or not. Defaults to 0.
+      gauss: An optional float giving the stored Gaussian number. Defaults to
+         0.0.
+      set_pos: An optional integer giving the position in the state array
+         that is being read from. Defaults to 0.
+   """
+
+   fields = {"seed"      : (InputValue, {"dtype"   : int,
+                                         "default" : 123456,
+                                         "help"    : "This is the seed number used to generate the initial state of the random number generator."}),
+             "state"     : (InputArray, {"dtype"   : np.uint,
+                                         "default" : input_default(factory=np.zeros, kwargs={'shape': (0,), 'dtype': np.uint}),
+                                         "help"    : "Gives the state vector for the random number generator. Avoid directly modifying this unless you are very familiar with the inner workings of the algorithm used."}),
+             "has_gauss" : (InputValue, {"dtype"   : int,
+                                         "default" : 0,
+                                         "help"    : "Determines whether there is a stored gaussian number or not. A value of 0 means there is none stored."}),
+             "gauss"     : (InputValue, {"dtype"   : float,
+                                         "default" : 0.00,
+                                         "help"    : "The stored Gaussian number." }),
+             "set_pos"   : (InputValue, {"dtype"   : int,
+                                         "default" : 0,
+                                         "help"    : "Gives the position in the state array that the random number generator is reading from."})}
+
+   default_help = "Deals with the pseudo-random number generator."
+   default_label = "PRNG"
+
+   def store(self, prng):
+      """Takes a random number instance and stores a minimal
+      representation of it.
+
+      Args:
+         prng: A random number object from which to initialise from.
+      """
+
+      super(InputRandom,self).store(prng)
+      self.seed.store(prng.seed)
+      gstate = prng.state
+      self.state.store(gstate[1])
+      self.set_pos.store(gstate[2])
+      self.has_gauss.store(gstate[3])
+      self.gauss.store(gstate[4])
+
+   def fetch(self):
+      """Creates a random number object.
+
+      Returns:
+         An random number object of the appropriate type and with the
+         appropriate properties given the attributes of the InputRandom
+         object.
+      """
+
+      super(InputRandom,self).fetch()
+      if not self.state._explicit:
+         return Random(seed=self.seed.fetch())
+      else:
+         return Random(state=('MT19937',self.state.fetch(), self.set_pos.fetch(), self.has_gauss.fetch(), self.gauss.fetch() ))
diff --git a/tools/i-pi/ipi/inputs/simulation.py b/tools/i-pi/ipi/inputs/simulation.py
new file mode 100644
index 0000000000000000000000000000000000000000..d020547cd21bfcd4a2a6a0b4447b44c72c388bdd
--- /dev/null
+++ b/tools/i-pi/ipi/inputs/simulation.py
@@ -0,0 +1,193 @@
+"""Deals with creating the simulation class.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Classes:
+   InputSimulation: Deals with creating the Simulation object from a file, and
+      writing the checkpoints.
+"""
+
+__all__ = ['InputSimulation']
+
+import numpy as np
+import os.path, sys
+import ipi.engine.simulation
+from ipi.utils.depend import *
+from ipi.utils.inputvalue import *
+from ipi.utils.units  import *
+from ipi.utils.prng   import *
+from ipi.utils.io     import *
+from ipi.utils.io.io_xml import *
+from ipi.utils.messages import verbosity
+from ipi.inputs.forces import InputForces
+from ipi.inputs.prng import InputRandom
+from ipi.inputs.initializer import InputInitializer
+from ipi.inputs.beads import InputBeads
+from ipi.inputs.cell import InputCell
+from ipi.inputs.ensembles import InputEnsemble
+from ipi.inputs.outputs import InputOutputs
+from ipi.inputs.normalmodes import InputNormalModes
+from ipi.engine.normalmodes import NormalModes
+from ipi.engine.atoms import Atoms
+from ipi.engine.beads import Beads
+from ipi.engine.cell import Cell
+from ipi.engine.initializer import Initializer
+
+class InputSimulation(Input):
+   """Simulation input class.
+
+   Handles generating the appropriate forcefield class from the xml input file,
+   and generating the xml checkpoint tags and data from an instance of the
+   object.
+
+   Attributes:
+      verbosity: A string saying how much should be output to standard output.
+
+   Fields:
+      force: A restart force instance. Used as a model for all the replicas.
+      ensemble: A restart ensemble instance.
+      beads: A restart beads instance.
+      normal_modes: Setup of normal mode integrator.
+      cell: A restart cell instance.
+      output: A list of the required outputs.
+      prng: A random number generator object.
+      step: An integer giving the current simulation step. Defaults to 0.
+      total_steps: The total number of steps. Defaults to 1000
+      total_time:  The wall clock time limit. Defaults to 0 (no limit).
+      initialize: An array of strings giving all the quantities that should
+         be output.
+   """
+
+   fields = { "forces" :   (InputForces,    { "help"  : InputForces.default_help }),
+             "ensemble": (InputEnsemble, { "help"  : InputEnsemble.default_help } ),
+             "prng" :    (InputRandom,   { "help"  : InputRandom.default_help,
+                                         "default" : input_default(factory=Random)} ),
+             "initialize" : (InputInitializer, { "help" : InputInitializer.default_help,
+                                                "default" : input_default(factory=Initializer) } ),
+             "beads" :   (InputBeads, { "help"     : InputBeads.default_help,
+                                        "default"  : input_default(factory=Beads, kwargs={'natoms': 0, 'nbeads': 0}) } ),
+             "normal_modes" :   (InputNormalModes, { "help"     : InputNormalModes.default_help,
+                                        "default"  : input_default(factory=NormalModes, kwargs={'mode': "rpmd"}) } ),
+             "cell" :    (InputCell,   { "help"    : InputCell.default_help,
+                                        "default"  : input_default(factory=Cell) }),
+             "output" :  (InputOutputs, { "help"   : InputOutputs.default_help,
+                                          "default": input_default(factory=InputOutputs.make_default)  }),
+             "step" :       ( InputValue, { "dtype"    : int,
+                                            "default"  : 0,
+                                            "help"     : "The current simulation time step." }),
+             "total_steps": ( InputValue, { "dtype"    : int,
+                                            "default"  : 1000,
+                                            "help"     : "The total number of steps that will be done. If 'step' is equal to or greater than 'total_steps', then the simulation will finish." }),
+             "total_time" :       ( InputValue, { "dtype"    : float,
+                                            "default"  : 0,
+                                            "help"     : "The maximum wall clock time (in seconds)." }),
+                                             }
+
+   attribs = { "verbosity" : (InputAttribute, { "dtype"   : str,
+                                      "default" : "low",
+                                      "options" : [ "quiet", "low", "medium", "high", "debug" ],
+                                      "help"    : "The level of output on stdout."
+                                         })
+             }
+
+   default_help = "This is the top level class that deals with the running of the simulation, including holding the simulation specific properties such as the time step and outputting the data."
+   default_label = "SIMULATION"
+
+   def store(self, simul):
+      """Takes a simulation instance and stores a minimal representation of it.
+
+      Args:
+         simul: A simulation object.
+      """
+
+      super(InputSimulation,self).store()
+      self.forces.store(simul.flist)
+      self.ensemble.store(simul.ensemble)
+
+      self.beads.store(simul.beads)
+
+      self.normal_modes.store(simul.nm)
+      self.cell.store(simul.cell)
+      self.prng.store(simul.prng)
+      self.step.store(simul.step)
+      self.total_steps.store(simul.tsteps)
+      self.total_time.store(simul.ttime)
+      self.output.store(simul.outputs)
+
+      # this we pick from the messages class. kind of a "global" but it seems to
+      # be the best way to pass around the (global) information on the level of output.
+      if verbosity.debug:
+         self.verbosity.store("debug")
+      elif verbosity.high:
+         self.verbosity.store("high")
+      elif verbosity.medium:
+         self.verbosity.store("medium")
+      elif verbosity.low:
+         self.verbosity.store("low")
+      elif verbosity.quiet:
+         self.verbosity.store("quiet")
+      else:
+         raise ValueError("Invalid verbosity level")
+
+   def fetch(self):
+      """Creates a simulation object.
+
+      Returns:
+         A simulation object of the appropriate type and with the appropriate
+         properties and other objects given the attributes of the
+         InputSimulation object.
+
+      Raises:
+         TypeError: Raised if one of the file types in the stride keyword
+            is incorrect.
+      """
+
+      super(InputSimulation,self).fetch()
+
+      # small hack: initialize here the verbosity level -- we really assume to have
+      # just one simulation object
+      verbosity.level=self.verbosity.fetch()
+
+      # this creates a simulation object which gathers all the little bits
+      #TODO use named arguments since this list is a bit too long...
+      rsim = ipi.engine.simulation.Simulation(self.beads.fetch(), self.cell.fetch(),
+               self.forces.fetch(), self.ensemble.fetch(), self.prng.fetch(),
+                  self.output.fetch(), self.normal_modes.fetch(),
+                     self.initialize.fetch(), self.step.fetch(),
+                        tsteps=self.total_steps.fetch(),
+                           ttime=self.total_time.fetch())
+
+      # this does all of the piping between the components of the simulation
+      rsim.bind()
+
+      return rsim
+
+   def check(self):
+      """Function that deals with optional arguments.
+
+      Deals with the difference between classical and PI dynamics. If there is
+      no beads argument, the bead positions are generated from the atoms, with
+      the necklace being fixed at the atom position. Similarly, if no nbeads
+      argument is specified a classical simulation is done.
+
+      Raises:
+         TypeError: Raised if no beads or atoms attribute is defined.
+      """
+
+      super(InputSimulation,self).check()
+      if self.total_steps.fetch() <= self.step.fetch():
+         raise ValueError("Current step greater than total steps, no dynamics will be done.")
diff --git a/tools/i-pi/ipi/inputs/thermostats.py b/tools/i-pi/ipi/inputs/thermostats.py
new file mode 100644
index 0000000000000000000000000000000000000000..cbe2deefcf05349286ae5e83722d45dd372117aa
--- /dev/null
+++ b/tools/i-pi/ipi/inputs/thermostats.py
@@ -0,0 +1,195 @@
+"""Deals with creating the thermostats class.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Chooses between the different possible thermostat options and creates the
+appropriate thermostat object, with suitable parameters.
+
+Classes:
+   InputThermo: Deals with creating the thermostat object from a file, and
+      writing the checkpoints.
+"""
+
+__all__ = ['InputThermo']
+
+import numpy as np
+from ipi.utils.depend   import *
+from ipi.utils.inputvalue  import *
+from ipi.engine.thermostats import *
+
+class InputThermo(Input):
+   """Thermostat input class.
+
+   Handles generating the appropriate thermostat class from the xml input file,
+   and generating the xml checkpoiunt tags and data from an instance of the
+   object.
+
+   Attributes:
+      mode: An optional string giving the type of the thermostat used. Defaults
+         to 'langevin'.
+
+   Fields:
+      ethermo: An optional float giving the amount of heat energy transferred
+         to the bath. Defaults to 0.0.
+      tau: An optional float giving the damping time scale. Defaults to 1.0.
+      pile_scale: Scaling for the PILE damping relative to the critical damping.
+      A: An optional array of floats giving the drift matrix. Defaults to 0.0.
+      C: An optional array of floats giving the static covariance matrix.
+         Defaults to 0.0.
+      s: An optional array of floats giving the additional momentum-scaled
+         momenta in GLE. Defaults to 0.0.
+   """
+
+   attribs = { "mode": (InputAttribute, { "dtype"   : str,
+                                      "options" : [ "", "langevin", "svr", "pile_l", "pile_g", "gle", "nm_gle", "nm_gle_g" ],
+                                      "help"    : "The style of thermostatting. 'langevin' specifies a white noise langevin equation to be attached to the cartesian representation of the momenta. 'svr' attaches a velocity rescaling thermostat to the cartesian representation of the momenta. Both 'pile_l' and 'pile_g' attaches a white noise langevin thermostat to the normal mode representation, with 'pile_l' attaching a local langevin thermostat to the centroid mode and 'pile_g' instead attaching a global velocity rescaling thermostat. 'gle' attaches a coloured noise langevin thermostat to the cartesian representation of the momenta, 'nm_gle' attaches a coloured noise langevin thermostat to the normal mode representation of the momenta and a langevin thermostat to the centroid and 'nm_gle_g' attaches a gle thermostat to the normal modes and a svr thermostat to the centroid."
+                                         }) }
+   fields = { "ethermo" : (InputValue, {  "dtype"     : float,
+                                          "default"   : 0.0,
+                                          "help"      : "The initial value of the thermostat energy. Used when the simulation is restarted to guarantee continuity of the conserved quantity.",
+                                          "dimension" : "energy" }),
+            "tau" : (InputValue, {  "dtype"     : float,
+                                    "default"   : 0.0,
+                                    "help"      : "The friction coefficient for white noise thermostats.",
+                                    "dimension" : "time" }),
+            "pile_scale" : (InputValue, { "dtype" : float,
+                                    "default"   : 1.0,
+                                    "help"      : "Scaling for the PILE damping relative to the critical damping."} ),
+            "A" : (InputArray, {    "dtype"     : float,
+                                    "default"   : input_default(factory=np.zeros, args = (0,)),
+                                    "help"      : "The friction matrix for GLE thermostats.",
+                                    "dimension" : "frequency" }),
+            "C" : (InputArray, {    "dtype"     : float,
+                                    "default"   : input_default(factory=np.zeros, args = (0,)),
+                                    "help"      : "The covariance matrix for GLE thermostats.",
+                                    "dimension" : "temperature" }),
+            "s" : (InputArray, {    "dtype"     : float,
+                                    "default"   : input_default(factory=np.zeros, args = (0,)),
+                                    "help"      : "Input values for the additional momenta in GLE.",
+                                    "dimension" : "ms-momentum" })
+             }
+
+   default_help = "Simulates an external heat bath to keep the velocity distribution at the correct temperature."
+   default_label = "THERMOSTATS"
+
+   def store(self, thermo):
+      """Takes a thermostat instance and stores a minimal representation of it.
+
+      Args:
+         thermo: A thermostat object.
+
+      Raises:
+         TypeError: Raised if the thermostat is not a recognized type.
+      """
+
+      super(InputThermo,self).store(thermo)
+      if type(thermo) is ThermoLangevin:
+         self.mode.store("langevin")
+         self.tau.store(thermo.tau)
+      elif type(thermo) is ThermoSVR:
+         self.mode.store("svr")
+         self.tau.store(thermo.tau)
+      elif type(thermo) is ThermoPILE_L:
+         self.mode.store("pile_l")
+         self.tau.store(thermo.tau)
+         self.pile_scale.store(thermo.pilescale)
+      elif type(thermo) is ThermoPILE_G:
+         self.mode.store("pile_g")
+         self.tau.store(thermo.tau)
+         self.pile_scale.store(thermo.pilescale)
+      elif type(thermo) is ThermoGLE:
+         self.mode.store("gle")
+         self.A.store(thermo.A)
+         if dget(thermo,"C")._func is None:
+            self.C.store(thermo.C)
+         self.s.store(thermo.s)
+      elif type(thermo) is ThermoNMGLE:
+         self.mode.store("nm_gle")
+         self.A.store(thermo.A)
+         if dget(thermo,"C")._func is None:
+            self.C.store(thermo.C)
+         self.s.store(thermo.s)
+      elif type(thermo) is ThermoNMGLEG:
+         self.mode.store("nm_gle_g")
+         self.A.store(thermo.A)
+         self.tau.store(thermo.tau)
+         if dget(thermo,"C")._func is None:
+            self.C.store(thermo.C)
+         self.s.store(thermo.s)
+      elif type(thermo) is Thermostat:
+         self.mode.store("")
+      else:
+         raise TypeError("Unknown thermostat mode " + type(thermo).__name__)
+      self.ethermo.store(thermo.ethermo)
+
+   def fetch(self):
+      """Creates a thermostat object.
+
+      Returns:
+         A thermostat object of the appropriate type and with the appropriate
+         parameters given the attributes of the InputThermo object.
+
+      Raises:
+         TypeError: Raised if the thermostat type is not a recognized option.
+      """
+
+      super(InputThermo,self).fetch()
+      if self.mode.fetch() == "langevin":
+         thermo = ThermoLangevin(tau=self.tau.fetch())
+      elif self.mode.fetch() == "svr":
+         thermo = ThermoSVR(tau=self.tau.fetch())
+      elif self.mode.fetch() == "pile_l":
+         thermo = ThermoPILE_L(tau=self.tau.fetch(), scale=self.pile_scale.fetch())
+      elif self.mode.fetch() == "pile_g":
+         thermo = ThermoPILE_G(tau=self.tau.fetch(), scale=self.pile_scale.fetch())
+      elif self.mode.fetch() == "gle":
+         rC = self.C.fetch()
+         if len(rC) == 0:
+            rC = None
+         thermo = ThermoGLE(A=self.A.fetch(),C=rC)
+         thermo.s = self.s.fetch()
+      elif self.mode.fetch() == "nm_gle":
+         rC = self.C.fetch()
+         if len(rC) == 0:
+            rC = None
+         thermo = ThermoNMGLE(A=self.A.fetch(),C=rC)
+         thermo.s = self.s.fetch()
+      elif self.mode.fetch() == "nm_gle_g":
+         rC = self.C.fetch()
+         if len(rC) == 0:
+            rC = None
+         thermo = ThermoNMGLEG(A=self.A.fetch(),C=rC, tau=self.tau.fetch())
+         thermo.s = self.s.fetch()
+      elif self.mode.fetch() == "" :
+         thermo=Thermostat()
+      else:
+         raise TypeError("Invalid thermostat mode " + self.mode.fetch())
+
+      thermo.ethermo = self.ethermo.fetch()
+
+      return thermo
+
+   def check(self):
+      """Checks that the parameter arrays represents a valid thermostat."""
+
+      super(InputThermo,self).check()
+
+      if self.mode.fetch() in ["langevin", "svr", "pile_l", "pile_g", "nm_gle_g"]:
+         if self.tau.fetch() <= 0:
+            raise ValueError("The thermostat friction coefficient must be set to a positive value")
+      if self.mode.fetch() in ["gle", "nm_gle", "nm_gle_g"]:
+         pass  # PERHAPS DO CHECKS THAT MATRICES SATISFY REASONABLE CONDITIONS (POSITIVE-DEFINITENESS, ETC)
diff --git a/tools/i-pi/ipi/interfaces/README b/tools/i-pi/ipi/interfaces/README
new file mode 100644
index 0000000000000000000000000000000000000000..d5693d8f35e9e7e5aa4b377ff2c32932d9fa2673
--- /dev/null
+++ b/tools/i-pi/ipi/interfaces/README
@@ -0,0 +1,8 @@
+ -- Interfaces between i-PI and the drivers --
+
+ * This is the directory containing the code that deals with the socket 
+   interface.
+
+ * Files:
+   - sockets.py: Deals with the driver communication and the wrapper socket 
+      and threading interface.
diff --git a/tools/i-pi/ipi/interfaces/__init__.py b/tools/i-pi/ipi/interfaces/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..68af0572bfa0c12aeb5cc495adc2924a7d709921
--- /dev/null
+++ b/tools/i-pi/ipi/interfaces/__init__.py
@@ -0,0 +1 @@
+__all__ = ["sockets"]
diff --git a/tools/i-pi/ipi/interfaces/sockets.py b/tools/i-pi/ipi/interfaces/sockets.py
new file mode 100644
index 0000000000000000000000000000000000000000..998a87d113455d36019007425de7cdaf5a20e1cf
--- /dev/null
+++ b/tools/i-pi/ipi/interfaces/sockets.py
@@ -0,0 +1,773 @@
+"""Deals with the socket communication between the PIMD and driver code.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Deals with creating the socket, transmitting and receiving data, accepting and
+removing different driver routines and the parallelization of the force
+calculation.
+
+Classes:
+   Status: Simple class to keep track of the status, uses bitwise or to give
+      combinations of different status options.
+   DriverSocket: Class to deal with communication between a client and
+      the driver code.
+   InterfaceSocket: Host server class. Deals with distribution of all the jobs
+      between the different client servers.
+
+Functions:
+   Message: Sends a header string through the socket.
+
+Exceptions:
+   Disconnected: Raised if client has been disconnected.
+   InvalidStatus: Raised if client has the wrong status. Shouldn't have to be
+      used if the structure of the program is correct.
+"""
+
+__all__ = ['InterfaceSocket']
+
+import numpy as np
+import sys, os
+import socket, select, threading, signal, string, time
+from ipi.utils.depend import depstrip
+from ipi.utils.messages import verbosity, warning, info
+from ipi.utils.softexit import softexit
+
+
+HDRLEN = 12
+UPDATEFREQ = 10
+TIMEOUT = 5.0
+SERVERTIMEOUT = 2.0*TIMEOUT
+NTIMEOUT = 10
+
+def Message(mystr):
+   """Returns a header of standard length HDRLEN."""
+
+   return string.ljust(string.upper(mystr), HDRLEN)
+
+
+class Disconnected(Exception):
+   """Disconnected: Raised if client has been disconnected."""
+
+   pass
+
+class InvalidSize(Exception):
+   """Disconnected: Raised if client returns forces with inconsistent number of atoms."""
+
+   pass
+
+class InvalidStatus(Exception):
+   """InvalidStatus: Raised if client has the wrong status.
+
+   Shouldn't have to be used if the structure of the program is correct.
+   """
+
+   pass
+
+class Status:
+   """Simple class used to keep track of the status of the client.
+
+   Uses bitwise or to give combinations of different status options.
+   i.e. Status.Up | Status.Ready would be understood to mean that the client
+   was connected and ready to receive the position and cell data.
+
+   Attributes:
+      Disconnected: Flag for if the client has disconnected.
+      Up: Flag for if the client is running.
+      Ready: Flag for if the client has ready to receive position and cell data.
+      NeedsInit: Flag for if the client is ready to receive forcefield
+         parameters.
+      HasData: Flag for if the client is ready to send force data.
+      Busy: Flag for if the client is busy.
+      Timeout: Flag for if the connection has timed out.
+   """
+
+   Disconnected = 0
+   Up = 1
+   Ready = 2
+   NeedsInit = 4
+   HasData = 8
+   Busy = 16
+   Timeout = 32
+
+
+class DriverSocket(socket.socket):
+   """Deals with communication between the client and driver code.
+
+   Deals with sending and receiving the data from the driver code. Keeps track
+   of the status of the driver. Initialises the driver forcefield, sends the
+   position and cell data, and receives the force data.
+
+   Attributes:
+      _buf: A string buffer to hold the reply from the driver.
+      status: Keeps track of the status of the driver.
+      lastreq: The ID of the last request processed by the client.
+      locked: Flag to mark if the client has been working consistently on one image.
+   """
+
+   def __init__(self, socket):
+      """Initialises DriverSocket.
+
+      Args:
+         socket: A socket through which the communication should be done.
+      """
+
+      super(DriverSocket,self).__init__(_sock=socket)
+      self._buf = np.zeros(0,np.byte)
+      self.peername = self.getpeername()
+      self.status = Status.Up
+      self.waitstatus = False
+      self.lastreq = None
+      self.locked = False
+      
+   def shutdown(self, how=socket.SHUT_RDWR):
+      
+      self.sendall(Message("exit"))
+      self.status = Status.Disconnected
+      super(DriverSocket,self).shutdown(how)
+   
+   def poll(self):
+      """Waits for driver status."""
+
+      self.status = Status.Disconnected  # sets disconnected as failsafe status, in case _getstatus fails and exceptions are ignored upstream
+      self.status = self._getstatus()
+
+   def _getstatus(self):
+      """Gets driver status.
+
+      Returns:
+         An integer labelling the status via bitwise or of the relevant members
+         of Status.
+      """
+            
+      if not self.waitstatus:
+         try:
+            readable, writable, errored = select.select([], [self], [])
+            if self in writable:
+               self.sendall(Message("status"))
+               self.waitstatus = True
+         except:
+            return Status.Disconnected
+
+      try:
+         reply = self.recv(HDRLEN)
+         self.waitstatus = False # got status reply         
+      except socket.timeout:
+         warning(" @SOCKET:   Timeout in status recv!", verbosity.debug )
+         return Status.Up | Status.Busy | Status.Timeout
+      except:
+         return Status.Disconnected
+      
+      if not len(reply) == HDRLEN:
+         return Status.Disconnected
+      elif reply == Message("ready"):
+         return Status.Up | Status.Ready
+      elif reply == Message("needinit"):
+         return Status.Up | Status.NeedsInit
+      elif reply == Message("havedata"):
+         return Status.Up | Status.HasData
+      else:
+         warning(" @SOCKET:    Unrecognized reply: " + str(reply), verbosity.low )
+         return Status.Up
+
+   def recvall(self, dest):
+      """Gets the potential energy, force and virial from the driver.
+
+      Args:
+         dest: Object to be read into.
+
+      Raises:
+         Disconnected: Raised if client is disconnected.
+
+      Returns:
+         The data read from the socket to be read into dest.
+      """
+
+      blen = dest.itemsize*dest.size
+      if (blen > len(self._buf)):
+         self._buf.resize(blen)
+      bpos = 0
+      ntimeout = 0
+
+      while bpos < blen:
+         timeout = False
+
+#   pre-2.5 version.
+         try:
+            bpart = ""            
+            bpart = self.recv(blen - bpos)
+            if len(bpart) == 0: raise socket.timeout  # There is a problem if this returns no data
+            self._buf[bpos:bpos + len(bpart)] = np.fromstring(bpart, np.byte)
+         except socket.timeout:
+            warning(" @SOCKET:   Timeout in status recvall, trying again!", verbosity.low)
+            timeout = True
+            ntimeout += 1
+            if ntimeout > NTIMEOUT:
+               warning(" @SOCKET:  Couldn't receive within %5d attempts. Time to give up!" % (NTIMEOUT), verbosity.low)
+               raise Disconnected()
+            pass
+         if (not timeout and bpart == 0):
+            raise Disconnected()
+         bpos += len(bpart)
+
+#   post-2.5 version: slightly more compact for modern python versions
+#         try:
+#            bpart = 1
+#            bpart = self.recv_into(self._buf[bpos:], blen-bpos)
+#         except socket.timeout:
+#            print " @SOCKET:   Timeout in status recvall, trying again!"
+#            timeout = True
+#            pass
+#         if (not timeout and bpart == 0):
+#            raise Disconnected()
+#         bpos += bpart
+#TODO this Disconnected() exception currently just causes the program to hang.
+#This should do something more graceful
+
+      if np.isscalar(dest):
+         return np.fromstring(self._buf[0:blen], dest.dtype)[0]
+      else:
+         return np.fromstring(self._buf[0:blen], dest.dtype).reshape(dest.shape)
+
+   def initialize(self, rid, pars):
+      """Sends the initialisation string to the driver.
+
+      Args:
+         rid: The index of the request, i.e. the replica that
+            the force calculation is for.
+         pars: The parameter string to be sent to the driver.
+
+      Raises:
+         InvalidStatus: Raised if the status is not NeedsInit.
+      """
+
+      if self.status & Status.NeedsInit:
+         try:
+            self.sendall(Message("init"))
+            self.sendall(np.int32(rid))
+            self.sendall(np.int32(len(pars)))
+            self.sendall(pars)
+         except:
+            self.poll()
+            return
+      else:
+         raise InvalidStatus("Status in init was " + self.status)
+
+   def sendpos(self, pos, cell):
+      """Sends the position and cell data to the driver.
+
+      Args:
+         pos: An array containing the atom positions.
+         cell: A cell object giving the system box.
+
+      Raises:
+         InvalidStatus: Raised if the status is not Ready.
+      """
+
+      if (self.status & Status.Ready):
+         try:
+            self.sendall(Message("posdata"))
+            self.sendall(cell.h, 9*8)
+            self.sendall(cell.ih, 9*8)
+            self.sendall(np.int32(len(pos)/3))
+            self.sendall(pos, len(pos)*8)
+         except:
+            self.poll()
+            return
+      else:
+         raise InvalidStatus("Status in sendpos was " + self.status)
+
+   def getforce(self):
+      """Gets the potential energy, force and virial from the driver.
+
+      Raises:
+         InvalidStatus: Raised if the status is not HasData.
+         Disconnected: Raised if the driver has disconnected.
+
+      Returns:
+         A list of the form [potential, force, virial, extra].
+      """
+
+      if (self.status & Status.HasData):
+         self.sendall(Message("getforce"));
+         reply = ""         
+         while True:            
+            try:
+               reply = self.recv(HDRLEN)
+            except socket.timeout:
+               warning(" @SOCKET:   Timeout in getforce, trying again!", verbosity.low)
+               continue
+            if reply == Message("forceready"):
+               break
+            else:
+               warning(" @SOCKET:   Unexpected getforce reply: %s" % (reply), verbosity.low)
+            if reply == "":
+               raise Disconnected()
+      else:
+         raise InvalidStatus("Status in getforce was " + self.status)
+      
+      mu = np.float64()
+      mu = self.recvall(mu)
+
+      mlen = np.int32()
+      mlen = self.recvall(mlen)
+      mf = np.zeros(3*mlen,np.float64)
+      mf = self.recvall(mf)
+
+      mvir = np.zeros((3,3),np.float64)
+      mvir = self.recvall(mvir)
+      
+      #! Machinery to return a string as an "extra" field. Comment if you are using a old patched driver that does not return anything!
+      mlen = np.int32()
+      mlen = self.recvall(mlen)
+      if mlen > 0 :
+         mxtra = np.zeros(mlen,np.character)
+         mxtra = self.recvall(mxtra)
+         mxtra = "".join(mxtra)
+      else:
+         mxtra = ""
+
+      #!TODO must set up a machinery to intercept the "extra" return field
+      return [mu, mf, mvir, mxtra]
+
+
+class InterfaceSocket(object):
+   """Host server class.
+
+   Deals with distribution of all the jobs between the different client servers
+   and both initially and as clients either finish or are disconnected.
+   Deals with cleaning up after all calculations are done. Also deals with the
+   threading mechanism, and cleaning up if the interface is killed.
+
+   Attributes:
+      address: A string giving the name of the host network.
+      port: An integer giving the port the socket will be using.
+      slots: An integer giving the maximum allowed backlog of queued clients.
+      mode: A string giving the type of socket used.
+      latency: A float giving the number of seconds the interface will wait
+         before updating the client list.
+      timeout: A float giving a timeout limit for considering a calculation dead
+         and dropping the connection.
+      dopbc: A boolean which decides whether or not to fold the bead positions
+         back into the unit cell before passing them to the client code.
+      server: The socket used for data transmition.
+      clients: A list of the driver clients connected to the server.
+      requests: A list of all the jobs required in the current PIMD step.
+      jobs: A list of all the jobs currently running.
+      _poll_thread: The thread the poll loop is running on.
+      _prev_kill: Holds the signals to be sent to clean up the main thread
+         when a kill signal is sent.
+      _poll_true: A boolean giving whether the thread is alive.
+      _poll_iter: An integer used to decide whether or not to check for
+         client connections. It is used as a counter, once it becomes higher
+         than the pre-defined number of steps between checks the socket will
+         update the list of clients and then be reset to zero.
+   """
+
+   def __init__(self, address="localhost", port=31415, slots=4, mode="unix", latency=1e-3, timeout=1.0, dopbc=True):
+      """Initialises interface.
+
+      Args:
+         address: An optional string giving the name of the host server.
+            Defaults to 'localhost'.
+         port: An optional integer giving the port number. Defaults to 31415.
+         slots: An optional integer giving the maximum allowed backlog of
+            queueing clients. Defaults to 4.
+         mode: An optional string giving the type of socket. Defaults to 'unix'.
+         latency: An optional float giving the time in seconds the socket will
+            wait before updating the client list. Defaults to 1e-3.
+         timeout: Length of time waiting for data from a client before we assume
+            the connection is dead and disconnect the client.
+         dopbc: A boolean which decides whether or not to fold the bead positions
+            back into the unit cell before passing them to the client code.
+
+      Raises:
+         NameError: Raised if mode is not 'unix' or 'inet'.
+      """
+
+      self.address = address
+      self.port = port
+      self.slots = slots
+      self.mode = mode
+      self.latency = latency
+      self.timeout = timeout
+      self.dopbc = dopbc
+      self._poll_thread = None
+      self._prev_kill = {}
+      self._poll_true = False
+      self._poll_iter = 0
+
+   def open(self):
+      """Creates a new socket.
+
+      Used so that we can create a interface object without having to also
+      create the associated socket object.
+      """
+
+      if self.mode == "unix":
+         self.server = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
+         try:
+            self.server.bind("/tmp/ipi_" + self.address)
+            info("Created unix socket with address " + self.address, verbosity.medium)
+         except:
+            raise ValueError("Error opening unix socket. Check if a file " + ("/tmp/ipi_" + self.address) + " exists, and remove it if unused.")
+
+      elif self.mode == "inet":
+         self.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+         self.server.bind((self.address,self.port))
+         info("Created inet socket with address " + self.address + " and port number " + str(self.port), verbosity.medium)
+      else:
+         raise NameError("InterfaceSocket mode " + self.mode + " is not implemented (should be unix/inet)")
+
+      self.server.listen(self.slots)
+      self.server.settimeout(SERVERTIMEOUT)
+      self.clients = []
+      self.requests = []
+      self.jobs = []
+
+   def close(self):
+      """Closes down the socket."""
+
+      info(" @SOCKET: Shutting down the driver interface.", verbosity.low )
+      
+      for c in self.clients[:]:
+         if (c.status & Status.Up):
+            c.shutdown(socket.SHUT_RDWR)
+            
+      self.server.shutdown(socket.SHUT_RDWR)
+      self.server.close()
+      if self.mode == "unix":
+         os.unlink("/tmp/ipi_" + self.address)
+
+   def queue(self, atoms, cell, pars=None, reqid=0):
+      """Adds a request.
+
+      Note that the pars dictionary need to be sent as a string of a
+      standard format so that the initialisation of the driver can be done.
+
+      Args:
+         atoms: An Atoms object giving the atom positions.
+         cell: A Cell object giving the system box.
+         pars: An optional dictionary giving the parameters to be sent to the
+            driver for initialisation. Defaults to {}.
+         reqid: An optional integer that identifies requests of the same type,
+            e.g. the bead index
+
+      Returns:
+         A list giving the status of the request of the form {'atoms': Atoms
+         object giving the atom positions, 'cell': Cell object giving the
+         system box, 'pars': parameter string, 'result': holds the result as a
+         list once the computation is done, 'status': a string labelling the
+         status, 'id': the id of the request, usually the bead number, 'start':
+         the starting time for the calculation, used to check for timeouts.}.
+      """
+
+      par_str = " "
+
+      if not pars is None:
+         for k,v in pars.items():
+            par_str += k + " : " + str(v) + " , "
+      else:
+         par_str = " "
+
+      # APPLY PBC -- this is useful for codes such as LAMMPS that don't do full PBC when computing distances
+      pbcpos = depstrip(atoms.q).copy()
+      if self.dopbc:
+         cell.array_pbc(pbcpos)
+
+      newreq = {"pos": pbcpos, "cell": cell, "pars": par_str,
+                "result": None, "status": "Queued", "id": reqid,
+                "start": -1 }
+
+      self.requests.append(newreq)
+      return newreq
+
+   def release(self, request):
+      """Empties the list of requests once finished.
+
+      Args:
+         request: A list of requests that are done.
+      """
+
+      if request in self.requests:
+         self.requests.remove(request)
+
+   def pool_update(self):
+      """Deals with keeping the pool of client drivers up-to-date during a
+      force calculation step.
+
+      Deals with maintaining the client list. Clients that have
+      disconnected are removed and their jobs removed from the list of
+      running jobs and new clients are connected to the server.
+      """
+
+      for c in self.clients[:]:
+         if not (c.status & Status.Up):
+            try:
+               warning(" @SOCKET:   Client " + str(c.peername) +" died or got unresponsive(C). Removing from the list.", verbosity.low)
+               c.shutdown(socket.SHUT_RDWR)
+               c.close()
+            except:
+               pass
+            c.status = Status.Disconnected
+            self.clients.remove(c)
+            for [k,j] in self.jobs[:]:
+               if j is c:
+                  self.jobs = [ w for w in self.jobs if not ( w[0] is k and w[1] is j ) ] # removes pair in a robust way
+                  #self.jobs.remove([k,j])
+                  k["status"] = "Queued"
+                  k["start"] = -1
+
+      keepsearch = True
+      while keepsearch:
+         readable, writable, errored = select.select([self.server], [], [], 0.0)
+         if self.server in readable:
+            client, address = self.server.accept()
+            client.settimeout(TIMEOUT)
+            driver = DriverSocket(client)
+            info(" @SOCKET:   Client asked for connection from "+ str( address ) +". Now hand-shaking.", verbosity.low)
+            driver.poll()
+            if (driver.status | Status.Up):
+               self.clients.append(driver)
+               info(" @SOCKET:   Handshaking was successful. Added to the client list.", verbosity.low)
+            else:
+               warning(" @SOCKET:   Handshaking failed. Dropping connection.", verbosity.low)
+               client.shutdown(socket.SHUT_RDWR)
+               client.close()
+         else:
+            keepsearch = False
+
+   def pool_distribute(self):
+      """Deals with keeping the list of jobs up-to-date during a force
+      calculation step.
+
+      Deals with maintaining the jobs list. Gets data from drivers that have
+      finished their calculation and removes that job from the list of running
+      jobs, adds jobs to free clients and initialises the forcefields of new
+      clients.
+      """
+
+      for c in self.clients:
+         if c.status == Status.Disconnected : # client disconnected. force a pool_update
+            self._poll_iter = UPDATEFREQ
+            return
+         if not c.status & ( Status.Ready | Status.NeedsInit ):
+            c.poll()
+
+      for [r,c] in self.jobs[:]:
+         if c.status & Status.HasData:
+            try:
+               r["result"] = c.getforce()
+               if len(r["result"][1]) != len(r["pos"]):
+                  raise InvalidSize
+            except Disconnected:
+               c.status = Status.Disconnected
+               continue
+            except InvalidSize:
+              warning(" @SOCKET:   Client returned an inconsistent number of forces. Will mark as disconnected and try to carry on.", verbosity.low)
+              c.status = Status.Disconnected
+              continue
+            except:
+              warning(" @SOCKET:   Client got in a awkward state during getforce. Will mark as disconnected and try to carry on.", verbosity.low)
+              c.status = Status.Disconnected
+              continue
+            c.poll()
+            while c.status & Status.Busy: # waits, but check if we got stuck.
+               if self.timeout > 0 and r["start"] > 0 and time.time() - r["start"] > self.timeout:
+                  warning(" @SOCKET:  Timeout! HASDATA for bead " + str(r["id"]) + " has been running for " + str(time.time() - r["start"]) + " sec.", verbosity.low)
+                  warning(" @SOCKET:   Client " + str(c.peername) + " died or got unresponsive(A). Disconnecting.", verbosity.low)
+                  try:
+                     c.shutdown(socket.SHUT_RDWR)
+                  except:
+                     pass
+                  c.close()
+                  c.status = Status.Disconnected
+                  continue
+               c.poll()
+            if not (c.status & Status.Up):
+               warning(" @SOCKET:   Client died a horrible death while getting forces. Will try to cleanup.", verbosity.low)
+               continue
+            r["status"] = "Done"
+            c.lastreq = r["id"] # saves the ID of the request that the client has just processed
+            self.jobs = [ w for w in self.jobs if not ( w[0] is r and w[1] is c ) ] # removes pair in a robust way
+
+         if self.timeout > 0 and c.status != Status.Disconnected and r["start"] > 0 and time.time() - r["start"] > self.timeout:
+            warning(" @SOCKET:  Timeout! Request for bead " + str( r["id"]) + " has been running for " + str(time.time() - r["start"]) + " sec.", verbosity.low)
+            warning(" @SOCKET:   Client " + str(c.peername) + " died or got unresponsive(B). Disconnecting.",verbosity.low)
+            try:
+               c.shutdown(socket.SHUT_RDWR)
+            except socket.error:
+               e = sys.exc_info()
+               warning(" @SOCKET:  could not shut down cleanly the socket. %s: %s in file '%s' on line %d" % (e[0].__name__, e[1], os.path.basename(e[2].tb_frame.f_code.co_filename), e[2].tb_lineno), verbosity.low )
+            c.close()
+            c.poll()
+            c.status = Status.Disconnected
+
+      freec = self.clients[:]
+      for [r2, c] in self.jobs:
+         freec.remove(c)
+
+      pendr = self.requests[:]
+      pendr = [ r for r in self.requests if r["status"] == "Queued" ]
+
+      for fc in freec[:]:
+         matched = False
+         # first, makes sure that the client is REALLY free
+         if not (fc.status & Status.Up):
+            self.clients.remove(fc)   # if fc is in freec it can't be associated with a job (we just checked for that above)
+            continue
+         if fc.status & Status.HasData:
+            continue
+         if not (fc.status & (Status.Ready | Status.NeedsInit | Status.Busy) ):
+            warning(" @SOCKET: Client " + str(fc.peername) + " is in an unexpected status " + str(fc.status) + " at (1). Will try to keep calm and carry on.", verbosity.low)
+            continue
+         for match_ids in ( "match", "none", "free", "any" ):
+            for r in pendr[:]:
+               if match_ids == "match" and not fc.lastreq is r["id"]:
+                  continue
+               elif match_ids == "none" and not fc.lastreq is None:
+                  continue
+               elif match_ids == "free" and fc.locked:
+                  continue
+
+               info(" @SOCKET: Assigning [%5s] request id %4s to client with last-id %4s (% 3d/% 3d : %s)" % (match_ids,  str(r["id"]),  str(fc.lastreq), self.clients.index(fc), len(self.clients), str(fc.peername) ), verbosity.high )
+
+               while fc.status & Status.Busy:
+                  fc.poll()
+               if fc.status & Status.NeedsInit:
+                  fc.initialize(r["id"], r["pars"])
+                  fc.poll()
+                  while fc.status & Status.Busy: # waits for initialization to finish. hopefully this is fast
+                     fc.poll()
+               if fc.status & Status.Ready:
+                  fc.sendpos(r["pos"], r["cell"])
+                  r["status"] = "Running"
+                  r["start"] = time.time() # sets start time for the request
+                  fc.poll()
+                  self.jobs.append([r,fc])
+                  fc.locked =  (fc.lastreq is r["id"])
+                  matched = True
+                  # removes r from the list of pending jobs
+                  pendr = [nr for nr in pendr if (not nr is r)]
+                  break
+               else:
+                  warning(" @SOCKET: Client " + str(fc.peername) + " is in an unexpected status " + str(fc.status) + " at (2). Will try to keep calm and carry on.", verbosity.low)
+            if matched:
+               break # doesn't do a second (or third) round if it managed
+                     # to assign the job
+
+   def _kill_handler(self, signal, frame):
+      """Deals with handling a kill call gracefully.
+
+      Prevents any of the threads becoming zombies, by intercepting a
+      kill signal using the standard python function signal.signal() and
+      then closing the socket and the spawned threads before closing the main
+      thread. Called when signals SIG_INT and SIG_TERM are received.
+
+      Args:
+         signal: An integer giving the signal number of the signal received
+            from the socket.
+         frame: Current stack frame.
+      """
+
+      warning(" @SOCKET:   Kill signal. Trying to make a clean exit.", verbosity.low)
+      self.end_thread()
+
+      softexit.trigger(" @SOCKET: Kill signal received")
+
+      try:
+         self.__del__()
+      except:
+         pass
+      if signal in self._prev_kill:
+         self._prev_kill[signal](signal, frame)
+
+   def _poll_loop(self):
+      """The main thread loop.
+
+      Runs until either the program finishes or a kill call is sent. Updates
+      the pool of clients every UPDATEFREQ loops and loops every latency
+      seconds until _poll_true becomes false.
+      """
+
+      info(" @SOCKET: Starting the polling thread main loop.", verbosity.low)
+      self._poll_iter = UPDATEFREQ
+      while self._poll_true:
+         time.sleep(self.latency)
+         # makes sure to remove the last dead client as soon as possible -- and to get clients if we are dry
+         if self._poll_iter >= UPDATEFREQ or len(self.clients)==0 or (len(self.clients) > 0 and not(self.clients[0].status & Status.Up)):
+            self.pool_update()
+            self._poll_iter = 0
+         self._poll_iter += 1
+         self.pool_distribute()
+
+         if os.path.exists("EXIT"): # softexit
+            info(" @SOCKET: Soft exit request from file EXIT. Flushing job queue.", verbosity.low)
+            # releases all pending requests
+            for r in self.requests:
+               r["status"] = "Exit"
+            for c in self.clients:
+               try:
+                  c.shutdown(socket.SHUT_RDWR)
+                  c.close()
+               except:
+                  pass
+            # flush it all down the drain
+            self.clients = []
+            self.jobs = []
+      self._poll_thread = None
+
+   def started(self):
+      """Returns a boolean specifying whether the thread has started yet."""
+
+      return (not self._poll_thread is None)
+
+   def start_thread(self):
+      """Spawns a new thread.
+
+      Splits the main program into two threads, one that runs the polling loop
+      which updates the client list, and one which gets the data. Also sets up
+      the machinery to deal with a kill call, in the case of a Ctrl-C or
+      similar signal the signal is intercepted by the _kill_handler function,
+      which cleans up the spawned thread before closing the main thread.
+
+      Raises:
+         NameError: Raised if the polling thread already exists.
+      """
+
+      self.open()
+      if not self._poll_thread is None:
+         raise NameError("Polling thread already started")
+      self._poll_thread = threading.Thread(target=self._poll_loop, name="poll_" + self.address)
+      self._poll_thread.daemon = True
+      self._prev_kill[signal.SIGINT] = signal.signal(signal.SIGINT, self._kill_handler)
+      self._prev_kill[signal.SIGTERM] = signal.signal(signal.SIGTERM, self._kill_handler)
+      self._poll_true = True
+      self._poll_thread.start()
+
+   def end_thread(self):
+      """Closes the spawned thread.
+
+      Deals with cleaning up the spawned thread cleanly. First sets
+      _poll_true to false to indicate that the poll_loop should be exited, then
+      closes the spawned thread and removes it.
+      """
+
+      self._poll_true = False
+      if not self._poll_thread is None:
+         self._poll_thread.join()
+      self._poll_thread = None
+      self.close()
diff --git a/tools/i-pi/ipi/tests/README b/tools/i-pi/ipi/tests/README
new file mode 100644
index 0000000000000000000000000000000000000000..17df9d7a7ce2c4a496c93b74425d2f30d05277b1
--- /dev/null
+++ b/tools/i-pi/ipi/tests/README
@@ -0,0 +1,9 @@
+ -- Nosetests directory --
+
+ * This is the directory containing the tests that can be run with nosetests.
+
+ * Files:
+   - common.py: Common helper funtions for use in the tests.
+   - datest.py: Tests the dependency utility and some of the numpy
+      facilities.
+   - test_*.py: The actual tests for at least some of the code basis.
diff --git a/tools/i-pi/ipi/tests/common.py b/tools/i-pi/ipi/tests/common.py
new file mode 100644
index 0000000000000000000000000000000000000000..3ffea431a11e15364ad75dc931e08cc6362977f2
--- /dev/null
+++ b/tools/i-pi/ipi/tests/common.py
@@ -0,0 +1,96 @@
+"""Common helper functions for running the tests.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Functions:
+   local: Returns local folder of the tests directory.
+
+Classes:
+   TestSimulation: Can be used to test that a particular simulation
+      will run properly, given an input file and a driver code.
+"""
+
+import glob
+import os
+import subprocess
+import shutil
+import tempfile
+
+def local(file=None):
+    """Returns local folder of the tests directory.
+
+    Args:
+        - file: Append file to the local folder
+    """
+    if file:
+        return os.sep.join(__file__.split(os.sep)[:-1]+[file])
+    else:
+        return os.sep.join(__file__.split(os.sep)[:-1])
+
+class TestSimulation(object):
+   """Simple class used to test various aspects of the simulation.
+
+   Can be used to run an example given the location of an xml
+   input file and the location of a suitable driver code.
+
+   Attributes:
+      finput: The name of the xml input file
+      folder_input: A string giving the directory the input file is held in.
+      fdriver: The location of a driver code.
+      cwd: Current working directory.
+      tmpdir: A temporary directory to run the simulation in.
+   """
+
+   def __init__(self, input, driver):
+      """Initializes TestSimulation.
+
+      Args:
+         input: The name of the xml input file.
+         driver: The location of the driver code.
+      """
+
+      self.finput = input
+      self.folder_input = os.sep.join(input.split(os.sep)[:-1])
+      self.fdriver = driver
+      self.cwd = os.getcwd()
+      self.tmpdir = tempfile.mkdtemp()
+
+      # Copy needed files to tmpdir
+      for src in glob.glob("%s/*"%self.folder_input):
+          shutil.copy(src, self.tmpdir)
+
+      os.chdir(self.tmpdir)
+
+   def __del__(self):
+      """Cleans the temporary directory once the simulation is over."""
+
+      os.chdir(self.cwd)
+      shutil.rmtree(self.tmpdir)
+
+   def run(self):
+      """Runs the simulation."""
+
+      # Run driver
+      p = subprocess.Popen("echo running %s"%self.fdriver, shell=True)
+
+      # Start simulation
+      # TODO
+      print subprocess.check_output("ls", shell=True)
+      print subprocess.check_output("pwd", shell=True)
+
+      # wait for driver to finish
+      p.wait()
diff --git a/tools/i-pi/ipi/tests/datest.py b/tools/i-pi/ipi/tests/datest.py
new file mode 100644
index 0000000000000000000000000000000000000000..aa608691ef78088cbe66544900199c019058f574
--- /dev/null
+++ b/tools/i-pi/ipi/tests/datest.py
@@ -0,0 +1,56 @@
+"""Short test scripts.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Used to test the depend array view mechanism.
+"""
+
+import sys
+sys.path.append("../")
+sys.path.append("../../")
+
+import utils.depend as dp
+import numpy as np
+
+print "## Creation test"
+a = dp.depend_array(name="a",value=np.zeros((2,2),float))
+b = dp.depend_array(name="b",value=np.zeros((2,2),float))
+
+print "## Slicing test"
+c = a[0]
+print type(c)
+
+print "## Addition test"
+c = a + b
+print type(c)
+
+print "## Increment test"
+c = np.zeros((2,2))
+c += a
+print type(c)
+
+print "## Dot test"
+c = np.dot(a,b)
+print type(c)
+
+rdot = np.dot
+def fdot(a,b):
+   return rdot(a,b).view(np.ndarray)
+#np.dot=fdot
+
+print "## Dot-f test"
+c = np.dot(a,b)
diff --git a/tools/i-pi/ipi/tests/test.pos_0.pdb b/tools/i-pi/ipi/tests/test.pos_0.pdb
new file mode 100644
index 0000000000000000000000000000000000000000..426c470192b62664541f985c33cb6c8364450af8
--- /dev/null
+++ b/tools/i-pi/ipi/tests/test.pos_0.pdb
@@ -0,0 +1,10 @@
+CRYST1    1.000    1.000    1.000  90.00  90.00  90.00 P 1           1
+ATOM      1    O   1     1       0.000   1.000   2.000  0.00  0.00             0
+ATOM      2    H   1     1       3.000   4.000   5.000  0.00  0.00             0
+ATOM      3    H   1     1       6.000   7.000   8.000  0.00  0.00             0
+END
+CRYST1    1.000    1.000    1.000  90.00  90.00  90.00 P 1           1
+ATOM      1    O   1     1       0.000   2.000   4.000  0.00  0.00             0
+ATOM      2    H   1     1       6.000   8.000  10.000  0.00  0.00             0
+ATOM      3    H   1     1      12.000  14.000  16.000  0.00  0.00             0
+END
diff --git a/tools/i-pi/ipi/tests/test.pos_0.xyz b/tools/i-pi/ipi/tests/test.pos_0.xyz
new file mode 100644
index 0000000000000000000000000000000000000000..05ae14da549072c28df5469c6a37397d8ba92bdd
--- /dev/null
+++ b/tools/i-pi/ipi/tests/test.pos_0.xyz
@@ -0,0 +1,10 @@
+3
+# CELL(abcABC):    1.00000     1.00000     1.00000    90.00000    90.00000    90.00000  
+       O  0.00000e+00  1.00000e+00  2.00000e+00
+       H  3.00000e+00  4.00000e+00  5.00000e+00
+       H  6.00000e+00  7.00000e+00  8.00000e+00
+3
+# CELL(abcABC):    1.00000     1.00000     1.00000    90.00000    90.00000    90.00000  
+       O  0.00000e+00  2.00000e+00  4.00000e+00
+       H  6.00000e+00  8.00000e+00  1.00000e+01
+       H  1.20000e+01  1.40000e+01  1.60000e+01
diff --git a/tools/i-pi/ipi/tests/test_contraction.py b/tools/i-pi/ipi/tests/test_contraction.py
new file mode 100644
index 0000000000000000000000000000000000000000..ad9556fbea41f9e72ba5fd5bdd1baefb08fe4297
--- /dev/null
+++ b/tools/i-pi/ipi/tests/test_contraction.py
@@ -0,0 +1,127 @@
+"""Tests ring polymer contraction.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+"""
+
+import sys
+sys.path.append("../")
+sys.path.append("../../")
+
+from ipi.utils import nmtransform
+import numpy as np
+from numpy.testing import assert_almost_equal as assert_equals
+
+def check_up_and_down_scaling(n, q):
+    """Check if q expanding and then contracting a ring polymer is a no-op.
+
+    Args:
+       n: The number of beads in the scaled ring polymer.
+       q: The original position array.
+    """
+
+    rescale = nmtransform.nm_rescale(q.shape[0], n)
+    print "Initial position of the beads:"
+    print q, q.shape, (q.shape[0], n)
+
+    # rescale up to the n beads
+    beads_n = rescale.b1tob2(q)
+    print "Upscaled to %d beads:"%n
+    print beads_n, beads_n.shape
+
+    beads_final = rescale.b2tob1(beads_n)
+    print "Final position of the beads:"
+    print beads_final
+
+    assert_equals(q, beads_final)
+    return beads_n
+
+def check_rpc_consistency(n, q):
+   """Check if q expanding and then contracting a ring polymer is a no-op.
+
+   Args:
+      n: The number of beads in the scaled ring polymer.
+      q: The original position array.
+   """
+
+   rescale1 = nmtransform.nm_rescale(q.shape[0], n)
+   rescale2 = nmtransform.nm_rescale(n,q.shape[0])
+
+   beads_n=rescale1.b1tob2(q)
+   beads_1=rescale1.b2tob1(beads_n)
+   beads_2=rescale2.b1tob2(beads_n)
+
+   assert_equals(beads_1, beads_2)
+
+def check_centroid_pos(n, q):
+   """Check if expanding and then contracting a ring polymer
+   maintains the centroid.
+
+   Args:
+      n: The number of beads in the scaled ring polymer.
+      q: The original position array.
+   """
+
+   beads_big = check_up_and_down_scaling(n, q)
+   rescale_big = nmtransform.mk_rs_matrix(n, 1)
+   rescale_q = nmtransform.mk_rs_matrix(q.shape[0], 1)
+
+   centroid_big = np.dot(rescale_big, beads_big)
+   centroid_q = np.dot(rescale_q, q)
+
+   assert_equals(centroid_q, centroid_big)
+
+numbers_to_check = range(10, 56, 9)
+def test_1_to_n():
+   """One bead tests."""
+
+   for n in numbers_to_check:
+      q = np.array([[0.0,0.0,0.0, 1.0,0.0,0.0]])
+      yield check_up_and_down_scaling, n, q
+      yield check_rpc_consistency, n, q
+      yield check_centroid_pos, n, q
+
+def test_2_to_n():
+   """Two bead tests."""
+
+   for n in numbers_to_check:
+      q = np.array([[0.0,0.0,0.0, 1.0,0.0,0.0],
+                    [0.0,0.1,0.0, 1.0,0.1,0.0]])
+      yield check_up_and_down_scaling, n, q
+      yield check_rpc_consistency, n, q
+      yield check_centroid_pos, n, q
+
+def test_3_to_n():
+   """Three bead tests."""
+
+   for n in numbers_to_check:
+      q = np.array([[0.0, 0.0,0.0, 1.0, 0.0,0.0],
+                    [0.0, 0.1,0.0, 1.0, 0.1,0.0],
+                    [0.0,-0.1,0.0, 1.0,-0.1,0.0]])
+      yield check_up_and_down_scaling, n, q
+      yield check_rpc_consistency, n, q
+      yield check_centroid_pos, n, q
+
+def test_4_to_n():
+   """Four bead tests."""
+
+   for n in numbers_to_check:
+      q = np.array([[0.0, 0.0,0.0, 1.0, 0.0,0.0],
+                    [0.0, 0.1,0.0, 1.0, 0.1,0.0],
+                    [0.0, 0.2,0.0, 1.0, 0.2,0.0],
+                    [0.0,-0.1,0.0, 1.0,-0.1,0.0]])
+      yield check_up_and_down_scaling, n, q
+      yield check_rpc_consistency, n, q
+      yield check_centroid_pos, n, q
diff --git a/tools/i-pi/ipi/tests/test_io.py b/tools/i-pi/ipi/tests/test_io.py
new file mode 100644
index 0000000000000000000000000000000000000000..53fad808f7e600a89535070bde6451317bba9149
--- /dev/null
+++ b/tools/i-pi/ipi/tests/test_io.py
@@ -0,0 +1,96 @@
+"""Deals with testing the io system.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+Note that this will only run if you have Python version 2.5 or later.
+Otherwise, replace all the with statements with f = filestream.
+"""
+
+import sys
+sys.path.append("../")
+sys.path.append("../../")
+
+import filecmp
+import os, sys
+import numpy as np
+from numpy.testing import assert_equal
+from common import local
+
+from ipi.engine.cell import Cell
+
+from ipi.utils.io import io_xyz
+from ipi.utils.io import io_pdb
+
+pos = np.array([i for i in range(3*3)])
+
+def test_read_xyz():
+   """Tests that xyz files are read correctly."""
+
+   with open(local("test.pos_0.xyz"), "r") as f:
+      atoms = io_xyz.read_xyz(f)
+      assert(len(atoms) == 3)
+      assert_equal(pos, atoms.q)
+
+def test_iter_xyz():
+   """Tests that xyz files with multiple frames are read correctly."""
+
+   with open(local("test.pos_0.xyz"), "r") as f:
+      for num, atoms in enumerate(io_xyz.iter_xyz(f)):
+         assert(len(atoms) == 3)
+         assert_equal(pos*(num+1), atoms.q)
+
+def test_read_pdb():
+   """Tests that pdb files are read correctly."""
+
+   with open(local("test.pos_0.pdb"), "r") as f:
+      atoms, cell = io_pdb.read_pdb(f)
+      assert(len(atoms) == 3)
+      assert_equal(pos, atoms.q)
+      # TODO: test cell
+
+def test_iter_pdb():
+   """Tests that pdb files with multiple frames are read correctly."""
+
+   with open(local("test.pos_0.pdb"), "r") as f:
+      for num, (atoms, cell) in enumerate(io_pdb.iter_pdb(f)):
+         assert(len(atoms) == 3)
+         assert_equal(pos*(num+1), atoms.q)
+
+def test_print_pdb():
+   """Tests that pdb files are printed correctly."""
+
+   with open(local("test.pos_0.pdb"), "r") as f:
+      with open(local("test.pos_1.xyz"), "w") as out:
+         for num, (atoms, cell) in enumerate(io_pdb.iter_pdb(f)):
+            assert(len(atoms) == 3)
+            assert_equal(pos*(num+1), atoms.q)
+            io_xyz.print_xyz(atoms, Cell(h=np.identity(3, float)), filedesc=out)
+
+   assert(filecmp.cmp(local("test.pos_0.xyz"), local("test.pos_1.xyz")))
+   os.unlink(local("test.pos_1.xyz"))
+
+def test_print_xyz():
+   """Tests that xyz files are printed correctly."""
+
+   with open(local("test.pos_0.pdb"), "r") as f:
+      with open(local("test.pos_1.pdb"), "w") as out:
+         for num, (atoms, cell) in enumerate(io_pdb.iter_pdb(f)):
+            assert(len(atoms) == 3)
+            assert_equal(pos*(num+1), atoms.q)
+            io_pdb.print_pdb(atoms, Cell(h=np.identity(3, float)), filedesc=out)
+
+   assert(filecmp.cmp(local("test.pos_0.pdb"), local("test.pos_1.pdb")))
+   os.unlink(local("test.pos_1.pdb"))
diff --git a/tools/i-pi/ipi/tests/test_runs.py b/tools/i-pi/ipi/tests/test_runs.py
new file mode 100644
index 0000000000000000000000000000000000000000..940f2c9ed976da4a0a38da6eaa6b598a5d213254
--- /dev/null
+++ b/tools/i-pi/ipi/tests/test_runs.py
@@ -0,0 +1,24 @@
+"""Tests that the Lennard-Jones test case works properly.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+"""
+
+from common import TestSimulation
+
+def test_lj_gas():
+    ts = TestSimulation(input="../../test/lj/gas/input.xml", driver="../../drivers/driver.x")
+    ts.run()
+    # Test properties (e.g. latest positions/temperature etc)
diff --git a/tools/i-pi/ipi/utils/README b/tools/i-pi/ipi/utils/README
new file mode 100644
index 0000000000000000000000000000000000000000..edc629f0815890d9f29935d74fadf0ee6a11c2c4
--- /dev/null
+++ b/tools/i-pi/ipi/utils/README
@@ -0,0 +1,21 @@
+ -- Utility functions directory --
+
+ * This is the directory containing functions that are used in the other 
+   modules in the code.
+
+ * Files:
+   - depend.py: Deals with the dependency detection, value caching and 
+      automatic updating of variables.
+   - inputvalue.py: Contains the base classes used in reading the xml
+      input file, and creating the restart file.
+   - mathtools.py: Contains the algorithms used in various parts of the code.
+   - messages.py: Contains the classes to generate info and warning messages
+      to standard output during the simulation.
+   - nmtransform.py: Contains the algorithms that deal with the normal mode
+      and ring polymer contraction transformations.
+   - prng.py: Deals with random number generation.
+   - softexit: Contains the classes to deal with calls for a soft exit.
+   - units.py: Holds atomic masses, fundamental constants, and unit conversions.
+
+ * Directories:
+   - io: Holds the modules that deal with reading and outputting files.
diff --git a/tools/i-pi/ipi/utils/__init__.py b/tools/i-pi/ipi/utils/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..6fa5c8e00c61d837f99b5ee6c4c61f5c165ee63c
--- /dev/null
+++ b/tools/i-pi/ipi/utils/__init__.py
@@ -0,0 +1 @@
+__all__ = ["depend", "units", "mathtools", "prng" , "inputvalue", 'nmtransform', 'messages', 'softexit']
diff --git a/tools/i-pi/ipi/utils/depend.py b/tools/i-pi/ipi/utils/depend.py
new file mode 100644
index 0000000000000000000000000000000000000000..1ca361f781109db2754ec28c8638c491c2edfcbc
--- /dev/null
+++ b/tools/i-pi/ipi/utils/depend.py
@@ -0,0 +1,768 @@
+"""Contains the classes that are used to define the dependency network.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+The classes defined in this module overload the standard __get__ and __set__
+routines of the numpy ndarray class and standard library object class so that
+they automatically keep track of whether anything they depend on has been
+altered, and so only recalculate their value when necessary.
+
+Basic quantities that depend on nothing else can be manually altered in the
+usual way, all other quantities are updated automatically and cannot be changed
+directly.
+
+The exceptions to this are synchronized properties, which are in effect
+multiple basic quantities all related to each other, for example the bead and
+normal mode representations of the positions and momenta. In this case any of
+the representations can be set manually, and all the other representations
+must keep in step.
+
+For a more detailed discussion, see the reference manual.
+
+Classes:
+   depend_base: Base depend class with the generic methods and attributes.
+   depend_value: Depend class for scalar objects.
+   depend_array: Depend class for arrays.
+   synchronizer: Class that holds the different objects that are related to each
+      other and keeps track of which property has been set manually.
+   dobject: An extension of the standard library object that overloads
+      __getattribute__ and __setattribute__, so that we can use the
+      standard syntax for setting and getting the depend object,
+      i.e. foo = value, not foo.set(value).
+
+Functions:
+   dget: Gets the dependencies of a depend object.
+   dset: Sets the dependencies of a depend object.
+   depstrip: Used on a depend_array object, to access its value without
+      needing the depend machinery, and so much more quickly. Must not be used
+      if the value of the array is to be changed.
+   depcopy: Copies the dependencies from one object to another
+   deppipe: Used to make two objects be synchronized to the same value.
+"""
+
+__all__ = ['depend_base', 'depend_value', 'depend_array', 'synchronizer',
+           'dobject', 'dget', 'dset', 'depstrip', 'depcopy', 'deppipe']
+
+import numpy as np
+from ipi.utils.messages import verbosity, warning
+
+class synchronizer(object):
+   """Class to implement synched objects.
+
+   Holds the objects used to keep two or more objects in step with each other.
+   This is shared between all the synched objects.
+
+   Attributes:
+      synched: A dictionary containing all the synched objects, of the form
+         {"name": depend object}.
+      manual: A string containing the name of the object being manually changed.
+   """
+
+   def __init__(self, deps=None):
+      """Initialises synchronizer.
+
+      Args:
+         deps: Optional dictionary giving the synched objects of the form
+            {"name": depend object}.
+      """
+
+      if deps is None:
+         self.synced = dict()
+      else:
+         self.synced = deps
+
+      self.manual = None
+
+
+#TODO put some error checks in the init to make sure that the object is initialized from consistent synchro and func states
+class depend_base(object):
+   """Base class for dependency handling.
+
+   Builds the majority of the machinery required for the different depend
+   objects. Contains functions to add and remove dependencies, the tainting
+   mechanism by which information about which objects have been updated is
+   passed around the dependency network, and the manual and automatic update
+   functions to check that depend objects with functions are not manually
+   updated and that synchronized objects are kept in step with the one manually
+   changed.
+
+   Attributes:
+      _tainted: An array containing one boolean, which is True if one of the
+         dependencies has been changed since the last time the value was
+         cached.
+      _func: A function name giving the method of calculating the value,
+         if required. None otherwise.
+      _name: The name of the depend base object.
+      _synchro: A synchronizer object to deal with synched objects, if
+         required. None otherwise.
+      _dependants: A list containing all objects dependent on the self.
+   """
+
+   def __init__(self, name, synchro=None, func=None, dependants=None, dependencies=None, tainted=None):
+      """Initialises depend_base.
+
+      An unusual initialisation routine, as it has to be able to deal with the
+      depend array mechanism for returning slices as new depend arrays.
+
+      This is the reason for the penultimate if statement; it automatically
+      taints objects created from scratch but does nothing to slices which are
+      not tainted.
+
+      Also, the last if statement makes sure that if a synchronized property is
+      sliced, this initialization routine does not automatically set it to the
+      manually updated property.
+
+      Args:
+         name: A string giving the name of self.
+         tainted: An optional array containing one boolean which is True if one
+         of the dependencies has been changed.
+         func: An optional argument that can be specified either by a function
+            name, or for synchronized values a dictionary of the form
+            {"name": function name}; where "name" is one of the other
+            synched objects and function name is the name of a function to
+            get the object "name" from self.
+         synchro: An optional synchronizer object.
+         dependants: An optional list containing objects that depend on self.
+         dependencies: An optional list containing objects that self
+            depends upon.
+      """
+
+      self._dependants = []
+      if tainted is None:
+         tainted = np.array([True],bool)
+      if dependants is None:
+         dependants = []
+      if dependencies is None:
+         dependencies = []
+      self._tainted = tainted
+      self._func = func
+      self._name = name
+
+      self.add_synchro(synchro)
+
+      for item in dependencies:
+         item.add_dependant(self, tainted)
+
+      self._dependants = dependants
+
+      # Don't taint self if the object is a primitive one. However, do propagate tainting to dependants if required.
+      if (tainted):
+         if self._func is None:
+            self.taint(taintme=False)
+         else:
+            self.taint(taintme=tainted)
+
+
+   def add_synchro(self, synchro=None):
+      """ Links depend object to a synchronizer. """
+
+      self._synchro = synchro
+      if not self._synchro is None and not self._name in self._synchro.synced:
+         self._synchro.synced[self._name] = self
+         self._synchro.manual = self._name
+
+
+   def add_dependant(self, newdep, tainted=True):
+      """Adds a dependant property.
+
+      Args:
+         newdep: The depend object to be added to the dependency list.
+         tainted: A boolean that decides whether newdep should be tainted.
+            True by default.
+      """
+
+      self._dependants.append(newdep)
+      if tainted:
+         newdep.taint(taintme=True)
+
+   def add_dependency(self, newdep, tainted=True):
+      """Adds a dependency.
+
+      Args:
+         newdep: The depend object self now depends upon.
+         tainted: A boolean that decides whether self should
+            be tainted. True by default.
+      """
+
+      newdep._dependants.append(self)
+      if tainted:
+         self.taint(taintme=True)
+
+   def taint(self,taintme=True):
+      """Recursively sets tainted flag on dependent objects.
+
+      The main function dealing with the dependencies. Taints all objects
+      further down the dependency tree until either all objects have been
+      tainted, or it reaches only objects that have already been tainted. Note
+      that in the case of a dependency loop the initial setting of _tainted to
+      True prevents an infinite loop occuring.
+
+      Also, in the case of a synchro object, the manually set quantity is not
+      tainted, as it is assumed that synchro objects only depend on each other.
+
+      Args:
+         taintme: A boolean giving whether self should be tainted at the end.
+            True by default.
+      """
+
+      self._tainted[:] = True
+      for item in self._dependants:
+         if (not item._tainted[0]):
+            item.taint()
+      if not self._synchro is None:
+         for v in self._synchro.synced.values():
+            if (not v._tainted[0]) and (not v is self):
+               v.taint(taintme=True)
+         self._tainted[:] = (taintme and (not self._name == self._synchro.manual))
+      else:
+         self._tainted[:] = taintme
+
+   def tainted(self):
+      """Returns tainted flag."""
+
+      return self._tainted[0]
+
+   def update_auto(self):
+      """Automatic update routine.
+
+      Updates the value when get has been called and self has been tainted.
+      """
+
+      if not self._synchro is None:
+         if (not self._name == self._synchro.manual):
+            self.set(self._func[self._synchro.manual](), manual=False)
+         else:
+            warning(self._name + " probably shouldn't be tainted (synchro)", verbosity.low)
+      elif not self._func is None:
+         self.set(self._func(), manual=False)
+      else:
+         warning(self._name + " probably shouldn't be tainted (value)", verbosity.low)
+
+   def update_man(self):
+      """Manual update routine.
+
+      Updates the value when the value has been manually set. Also raises an
+      exception if a calculated quantity has been manually set. Also starts the
+      tainting routine.
+
+      Raises:
+         NameError: If a calculated quantity has been manually set.
+      """
+
+      if not self._synchro is None:
+         self._synchro.manual = self._name
+         for v in self._synchro.synced.values():
+            v.taint(taintme=True)
+         self._tainted[:] = False
+      elif not self._func is None:
+         raise NameError("Cannot set manually the value of the automatically-computed property <" + self._name + ">")
+      else:
+         self.taint(taintme=False)
+
+   def set(self, value, manual=False):
+      """Dummy setting routine."""
+
+      pass
+
+   def get(self):
+      """Dummy getting routine."""
+
+      pass
+
+class depend_value(depend_base):
+   """Scalar class for dependency handling.
+
+   Attributes:
+      _value: The value associated with self.
+   """
+
+   def __init__(self, name, value=None, synchro=None, func=None, dependants=None, dependencies=None, tainted=None):
+      """Initialises depend_value.
+
+      Args:
+         name: A string giving the name of self.
+         value: The value of the object. Optional.
+         tainted: An optional array giving the tainted flag. Default is [True].
+         func: An optional argument that can be specified either by a function
+            name, or for synchronized values a dictionary of the form
+            {"name": function name}; where "name" is one of the other
+            synched objects and function name is the name of a function to
+            get the object "name" from self.
+         synchro: An optional synchronizer object.
+         dependants: An optional list containing objects that depend on self.
+         dependencies: An optional list containing objects that self
+            depends upon.
+      """
+
+      self._value = value
+      super(depend_value,self).__init__(name, synchro, func, dependants, dependencies, tainted)
+
+   def get(self):
+      """Returns value, after recalculating if necessary.
+
+      Overwrites the standard method of getting value, so that value
+      is recalculated if tainted.
+      """
+
+      if self._tainted[0]:
+         self.update_auto()
+         self.taint(taintme=False)
+
+      return self._value
+
+   def __get__(self, instance, owner):
+      """Overwrites standard get function."""
+
+      return self.get()
+
+   def set(self, value, manual=True):
+      """Alters value and taints dependencies.
+
+      Overwrites the standard method of setting value, so that dependent
+      quantities are tainted, and so we check that computed quantities are not
+      manually updated.
+      """
+
+      self._value = value
+      self.taint(taintme=False)
+      if (manual):
+         self.update_man()
+
+   def __set__(self, instance, value):
+      """Overwrites standard set function."""
+
+      self.set(value)
+
+
+class depend_array(np.ndarray, depend_base):
+   """Array class for dependency handling.
+
+   Differs from depend_value as arrays handle getting items in a different
+   way to scalar quantities, and as there needs to be support for slicing an
+   array. Initialisation is also done in a different way for ndarrays.
+
+   Attributes:
+      _bval: The base deparray storage space. Equal to depstrip(self) unless
+         self is a slice.
+   """
+
+   def __new__(cls, value, name, synchro=None, func=None, dependants=None, dependencies=None, tainted=None, base=None):
+      """Creates a new array from a template.
+
+      Called whenever a new instance of depend_array is created. Casts the
+      array base into an appropriate form before passing it to
+      __array_finalize__().
+
+      Args:
+         See __init__().
+      """
+
+      obj = np.asarray(value).view(cls)
+      return obj
+
+   def __init__(self, value, name, synchro=None, func=None, dependants=None, dependencies=None, tainted=None, base=None):
+      """Initialises depend_array.
+
+      Note that this is only called when a new array is created by an
+      explicit constructor.
+
+      Args:
+         name: A string giving the name of self.
+         value: The (numpy) array to serve as the memory base.
+         tainted: An optional array giving the tainted flag. Default is [True].
+         func: An optional argument that can be specified either by a function
+            name, or for synchronized values a dictionary of the form
+            {"name": function name}; where "name" is one of the other
+            synched objects and function name is the name of a function to
+            get the object "name" from self.
+         synchro: An optional synchronizer object.
+         dependants: An optional list containing objects that depend on self.
+         dependencies: An optional list containing objects that self
+            depends upon.
+      """
+
+      super(depend_array,self).__init__(name, synchro, func, dependants, dependencies, tainted)
+
+      if base is None:
+         self._bval = value
+      else:
+         self._bval = base
+
+   def copy(self, order='C', maskna=None):
+      """Wrapper for numpy copy mechanism."""
+
+      # Sets a flag and hands control to the numpy copy
+      self._fcopy = True
+      return super(depend_array,self).copy(order)
+
+   def __array_finalize__(self, obj):
+      """Deals with properly creating some arrays.
+
+      In the case where a function acting on a depend array returns a ndarray,
+      this casts it into the correct form and gives it the
+      depend machinery for other methods to be able to act upon it. New
+      depend_arrays will next be passed to __init__ ()to be properly
+      initialized, but some ways of creating arrays do not call __new__() or
+      __init__(), so need to be initialized.
+      """
+
+      depend_base.__init__(self, name="")
+
+      if type(obj) is depend_array:
+         # We are in a view cast or in new from template. Unfortunately
+         # there is no sure way to tell (or so it seems). Hence we need to
+         # handle special cases, and hope we are in a view cast otherwise.
+         if hasattr(obj,"_fcopy"):
+            del(obj._fcopy) # removes the "copy flag"
+            self._bval = depstrip(self)
+         else:
+            # Assumes we are in view cast, so copy over the attributes from the
+            # parent object. Typical case: when transpose is performed as a
+            # view.
+            super(depend_array,self).__init__(obj._name, obj._synchro, obj._func, obj._dependants, None, obj._tainted)
+            self._bval = obj._bval
+      else:
+         # Most likely we came here on the way to init.
+         # Just sets a defaults for safety
+         self._bval = depstrip(self)
+
+
+   def __array_prepare__(self, arr, context=None):
+      """Prepare output array for ufunc.
+
+      Depending on the context we try to understand if we are doing an
+      in-place operation (in which case we want to keep the return value a
+      deparray) or we are generating a new array as a result of the ufunc.
+      In this case there is no way to know if dependencies should be copied,
+      so we strip and return a ndarray.
+      """
+
+      if context is None or len(context) < 2 or not type(context[0]) is np.ufunc:
+         # It is not clear what we should do. If in doubt, strip dependencies.
+         return np.ndarray.__array_prepare__(self.view(np.ndarray),arr.view(np.ndarray),context)
+      elif len(context[1]) > context[0].nin and context[0].nout > 0:
+         # We are being called by a ufunc with a output argument, which is being
+         # actually used. Most likely, something like an increment,
+         # so we pass on a deparray
+         return super(depend_array,self).__array_prepare__(arr,context)
+      else:
+         # Apparently we are generating a new array.
+         # We have no way of knowing its
+         # dependencies, so we'd better return a ndarray view!
+         return np.ndarray.__array_prepare__(self.view(np.ndarray),arr.view(np.ndarray),context)
+
+   def __array_wrap__(self, arr, context=None):
+      """ Wraps up output array from ufunc.
+
+      See docstring of __array_prepare__().
+      """
+
+      if context is None or len(context) < 2 or not type(context[0]) is np.ufunc:
+         return np.ndarray.__array_wrap__(self.view(np.ndarray),arr.view(np.ndarray),context)
+      elif len(context[1]) > context[0].nin and context[0].nout > 0:
+         return super(depend_array,self).__array_wrap__(arr,context)
+      else:
+         return np.ndarray.__array_wrap__(self.view(np.ndarray),arr.view(np.ndarray),context)
+
+   # whenever possible in compound operations just return a regular ndarray
+   __array_priority__ = -1.0
+
+   def reshape(self, newshape):
+      """Changes the shape of the base array.
+
+      Args:
+         newshape: A tuple giving the desired shape of the new array.
+
+      Returns:
+         A depend_array with the dimensions given by newshape.
+      """
+
+      return depend_array(depstrip(self).reshape(newshape), name=self._name, synchro=self._synchro, func=self._func, dependants=self._dependants, tainted=self._tainted, base=self._bval)
+
+   def flatten(self):
+      """Makes the base array one dimensional.
+
+      Returns:
+         A flattened array.
+      """
+
+      return self.reshape(self.size)
+
+   @staticmethod
+   def __scalarindex(index, depth=1):
+      """Checks if an index points at a scalar value.
+
+      Used so that looking up one item in an array returns a scalar, whereas
+      looking up a slice of the array returns a new array with the same
+      dependencies as the original, so that changing the slice also taints
+      the global array.
+
+      Arguments:
+         index: the index to be checked.
+         depth: the rank of the array which is being accessed. Default value
+            is 1.
+
+      Returns:
+         A logical stating whether a __get__ instruction based
+         on index would return a scalar.
+      """
+
+      if (np.isscalar(index) and depth <= 1):
+         return True
+      elif (isinstance(index, tuple) and len(index)==depth):
+          #if the index is a tuple check it does not contain slices
+         for i in index:
+            if not np.isscalar(i): return False
+         return True
+      return False
+
+   def __getitem__(self,index):
+      """Returns value[index], after recalculating if necessary.
+
+      Overwrites the standard method of getting value, so that value
+      is recalculated if tainted. Scalar slices are returned as an ndarray,
+      so without depend machinery. If you need a "scalar depend" which
+      behaves as a slice, just create a 1x1 matrix, e.g b=a(7,1:2)
+
+      Args:
+         index: A slice variable giving the appropriate slice to be read.
+      """
+
+      if self._tainted[0]:
+         self.update_auto()
+         self.taint(taintme=False)
+
+      if (self.__scalarindex(index, self.ndim)):
+         return depstrip(self)[index]
+      else:
+         return depend_array(depstrip(self)[index], name=self._name, synchro=self._synchro, func=self._func, dependants=self._dependants, tainted=self._tainted, base=self._bval)
+
+
+   def __getslice__(self,i,j):
+      """Overwrites standard get function."""
+
+      return self.__getitem__(slice(i,j,None))
+
+   def get(self):
+      """Alternative to standard get function."""
+
+      return self.__get__(slice(None,None,None))
+
+   def __get__(self, instance, owner):
+      """Overwrites standard get function."""
+
+      # It is worth duplicating this code that is also used in __getitem__ as this
+      # is called most of the time, and we avoid creating a load of copies pointing to the same depend_array
+
+      if self._tainted[0]:
+         self.update_auto()
+         self.taint(taintme=False)
+
+      return self
+
+   def __setitem__(self,index,value,manual=True):
+      """Alters value[index] and taints dependencies.
+
+      Overwrites the standard method of setting value, so that dependent
+      quantities are tainted, and so we check that computed quantities are not
+      manually updated.
+
+      Args:
+         index: A slice variable giving the appropriate slice to be read.
+         value: The new value of the slice.
+         manual: Optional boolean giving whether the value has been changed
+            manually. True by default.
+      """
+
+      self.taint(taintme=False)
+      if manual:
+         depstrip(self)[index] = value
+         self.update_man()
+      elif index == slice(None,None,None):
+         self._bval[index] = value
+      else:
+         raise IndexError("Automatically computed arrays should span the whole parent")
+
+   def __setslice__(self,i,j,value):
+      """Overwrites standard set function."""
+
+      return self.__setitem__(slice(i,j),value)
+
+   def set(self, value, manual=True):
+      """Alterative to standard set function.
+
+      Args:
+         See __setitem__().
+      """
+
+      self.__setitem__(slice(None,None),value=value,manual=manual)
+
+   def __set__(self, instance, value):
+      """Overwrites standard set function."""
+
+      self.__setitem__(slice(None,None),value=value)
+
+
+# np.dot and other numpy.linalg functions have the nasty habit to
+# view cast to generate the output. Since we don't want to pass on
+# dependencies to the result of these functions, and we can't use
+# the ufunc mechanism to demote the class type to ndarray, we must
+# overwrite np.dot and other similar functions.
+# BEGINS NUMPY FUNCTIONS OVERRIDE
+# ** np.dot
+__dp_dot = np.dot
+
+def dep_dot(da, db):
+   a=depstrip(da)
+   b=depstrip(db)
+
+   return __dp_dot(da,db)
+
+np.dot = dep_dot
+# ENDS NUMPY FUNCTIONS OVERRIDE
+
+def dget(obj,member):
+   """Takes an object and retrieves one of its attributes.
+
+   Note that this is necessary as calling it in the standard way calls the
+   __get__() function of member.
+
+   Args:
+      obj: A user defined class.
+      member: A string giving the name of an attribute of obj.
+
+   Exceptions:
+      KeyError: If member is not an attribute of obj.
+
+   Returns:
+      obj.member.
+   """
+
+   return obj.__dict__[member]
+
+def dset(obj,member,value,name=None):
+   """Takes an object and sets one of its attributes.
+
+   Necessary for editing any depend object, and should be used for
+   initialising them as well, as often initialization occurs more than once,
+   with the second time effectively being an edit.
+
+   Args:
+      obj: A user defined class.
+      member: A string giving the name of an attribute of obj.
+      value: The new value of member.
+      name: New name of member.
+
+   Exceptions:
+      KeyError: If member is not an attribute of obj.
+   """
+
+   obj.__dict__[member] = value
+   if not name is None:
+      obj.__dict__[member]._name = name
+
+def depstrip(da):
+   """Removes dependencies from a depend_array.
+
+   Takes a depend_array and returns its value as a ndarray, effectively
+   stripping the dependencies from the ndarray. This speeds up a lot of
+   calculations involving these arrays. Must only be used if the value of the
+   array is not going to be changed.
+
+   Args:
+      deparray: A depend_array.
+
+   Returns:
+      A ndarray with the same value as deparray.
+   """
+
+   if isinstance(da, depend_array): # only bother to strip dependencies if the array actually IS a depend_array
+      #if da._tainted[0]:
+      #   print "!!! WARNING depstrip called on tainted array WARNING !!!!!" # I think we can safely assume that when we call depstrip the array has been cleared already but I am not 100% sure so better check - and in case raise the update
+      return da.view(np.ndarray)
+   else:
+      return da
+
+def deppipe(objfrom,memberfrom,objto,memberto):
+   """Synchronizes two depend objects.
+
+   Takes two depend objects, and makes one of them depend on the other in such
+   a way that both keep the same value. Used for attributes such as temperature
+   that are used in many different modules, and so need different depend objects
+   in each, but which should all have the same value.
+
+   Args:
+      objfrom: An object containing memberfrom.
+      memberfrom: The base depend object.
+      objto: An object containing memberto.
+      memberto: The depend object that should be equal to memberfrom.
+   """
+
+   dfrom = dget(objfrom,memberfrom)
+   dto = dget(objto,memberto)
+   dto._func = lambda : dfrom.get()
+   dto.add_dependency(dfrom)
+
+def depcopy(objfrom,memberfrom,objto,memberto):
+   """Copies the dependencies of one depend object to another.
+
+   Args:
+      See deppipe.
+   """
+   dfrom = dget(objfrom,memberfrom)
+   dto = dget(objto,memberto)
+   dto._dependants = dfrom._dependants
+   dto._synchro = dfrom._synchro
+   dto.add_synchro(dfrom._synchro)
+   dto._tainted = dfrom._tainted
+   dto._func = dfrom._func
+   if hasattr(dfrom,"_bval"):
+      dto._bval = dfrom._bval
+
+
+class dobject(object):
+   """Class that allows standard notation to be used for depend objects."""
+
+   def __getattribute__(self, name):
+      """Overwrites standard __getattribute__().
+
+      This changes the standard __getattribute__() function of any class that
+      subclasses dobject such that depend objects are called with their own
+      __get__() function rather than the standard one.
+      """
+
+      value = object.__getattribute__(self, name)
+      if hasattr(value, '__get__'):
+         value = value.__get__(self, self.__class__)
+      return value
+
+   def __setattr__(self, name, value):
+      """Overwrites standard __setattribute__().
+
+      This changes the standard __setattribute__() function of any class that
+      subclasses dobject such that depend objects are called with their own
+      __set__() function rather than the standard one.
+      """
+
+      try:
+         obj = object.__getattribute__(self, name)
+      except AttributeError:
+         pass
+      else:
+         if hasattr(obj, '__set__'):
+            return obj.__set__(self, value)
+      return object.__setattr__(self, name, value)
diff --git a/tools/i-pi/ipi/utils/inputvalue.py b/tools/i-pi/ipi/utils/inputvalue.py
new file mode 100644
index 0000000000000000000000000000000000000000..d1bbc631fdf47a3245c66f4f84f2878e6981b3fb
--- /dev/null
+++ b/tools/i-pi/ipi/utils/inputvalue.py
@@ -0,0 +1,968 @@
+"""Contains the classes that are used to write to and read from restart files.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+The classes defined in this module define the base functions which parse the
+data in the restart files. Each restart object defined has a fields and an
+attributes dictionary, which are filled with the tags and attributes that
+are allowed to be present, along with their default values and data type.
+
+These are then filled with the data from the xml file when the program
+is initialised, and are filled by the values calculated in the program which
+are then output to the checkpoint file when a restart file is required.
+
+Also deals with checking for user input errors, of the form of misspelt tags,
+bad data types, and failure to input required fields.
+
+Classes:
+   Input: Base input class.
+   InputAttribute: Input class for attribute data.
+   InputValue: Input class for scalar objects.
+   InputArray: Input class for arrays.
+   input_default: Class used to create mutable objects dynamically.
+"""
+
+__all__ = ['Input', 'InputValue', 'InputAttribute', 'InputArray', 'input_default']
+
+import numpy as np
+from copy import copy
+from ipi.utils.io.io_xml import *
+from ipi.utils.units import unit_to_internal, unit_to_user
+
+
+
+class input_default(object):
+   """Contains information required to dynamically create objects
+
+   Used so that we can define mutable default input values to various tags
+   without the usual trouble with having a class object that is also mutable,
+   namely that all members of that class share the same mutable object, so that
+   changing it for one instance of that class changes it for all others. It
+   does this by not holding the mutable default value, but instead the
+   information to create it, so that each instance of an input class can
+   have a separate instance of the default value.
+
+   Attributes:
+      type: Either a class type or function call from which to create the
+         default object.
+      args: A tuple giving positional arguments to be passed to the function.
+      kwargs: A dictionary giving key word arguments to be passed to the
+         function.
+   """
+
+   def __init__(self, factory, args = None, kwargs = None):
+      """Initialises input_default.
+
+      Args:
+         type: The class or function to be used to create the default object.
+         args: A tuple giving the arguments to be used to initialise
+            the default value.
+         kwargs: A dictionary giving the key word arguments to be used
+            to initialise the default value.
+      """
+
+      if args is None:
+         args = ()
+      if kwargs is None:
+         kwargs = {}
+      # a default will be generated by factory(*args, **kwargs)
+      # *args unpacks the tuple, and is used for positional arguments
+      # **kwargs unpacks the dictionary, and is used for keyword arguments
+      self.factory = factory
+      self.args = args
+      self.kwargs = kwargs
+
+
+class Input(object):
+   """Base class for input handling.
+
+   Has the generic methods for dealing with the xml input file. Parses the input
+   data, outputs the output data, and deals with storing and returning the
+   data obtained during the simulation for the restart files.
+
+   Attributes:
+      fields: A dictionary holding the possible tags contained within the
+         tags for this restart object, which are then turned into the objects
+         held by the object given by this restart object. The dictionary is
+         of the form:
+         {"tag name": ( Input_object,
+                                 {"default": default value,
+                                  "dtype": data type,
+                                  "options": list of available options,
+                                  "help": help string,
+                                  "dimension": dimensionality of data}), ... }.
+      dynamic: A dictionary holding the possible tags contained within the
+         tags for this restart object, which are then turned into the objects
+         held by the object given by this restart object. These are used for
+         tags that can be specified more than once.
+         The dictionary is of the form:
+         {"tag name": ( Input_object,
+                                 {"default": default value,
+                                  "dtype": data type,
+                                  "options": list of available options,
+                                  "help": help string,
+                                  "dimension": dimensionality of data}), ... }.
+      attribs: A dictionary holding the attribute data for the tag for this
+         restart object. The dictionary is of the form:
+         {"attribute name": ( Input_object,
+                                 {"default": default value,
+                                  "dtype": data type,
+                                  "options": list of available options,
+                                  "help": help string,
+                                  "dimension": dimensionality of data}), ... }.
+      extra: A list of tuples ( "name", Input_object ) that may be used to
+         extend the capabilities of the class, i.e. to hold several instances of
+         a field with the same name, or to hold variable numbers of elements.
+      default_help: The default help string.
+      _help: The help string of the object. Defaults to default_help.
+      _default: Optional default value.
+      _optional: A bool giving whether the field is a required field.
+      _explicit: A bool giving whether the field has been specified by the user.
+      _text: All text written between the tags of the object.
+      _label: A label to be used to identify the class in the latex user manual.
+      _defwrite: The string which would be output if the class has its default
+         value.
+   """
+
+   fields = {}
+   attribs = {}
+   dynamic = {}
+
+   default_help = "Generic input value"
+   default_label = "" #used as a way to reference a particular class using
+                      #hyperlinks
+
+   def __init__(self, help=None, default=None):
+      """Initialises Input.
+
+      Automatically adds all the fields and attribs names to the input object's
+      dictionary, then initialises all the appropriate input objects
+      as the corresponding values.
+
+      Args:
+         help: A help string.
+         default: A default value.
+      """
+
+      # list of extended (dynamic) fields
+      self.extra = []
+
+      if help is None:
+         self._help = self.default_help
+      else:
+         self._help = help
+
+      if isinstance(default,input_default):
+         #creates default dynamically if a suitable template is defined.
+         self._default = default.factory(*default.args, **default.kwargs)
+      else:
+         self._default = default
+
+      self._optional = not (self._default is None)
+
+      self._label = self.default_label
+
+      #For each tag name in the fields and attribs dictionaries,
+      #creates and object of the type given, expanding the dictionary to give
+      #the arguments of the __init__() function, then adds it to the input
+      #object's dictionary.
+      for f, v in self.fields.iteritems():
+         self.__dict__[f] = v[0](**v[1])
+
+      for a, v in self.attribs.iteritems():
+         self.__dict__[a] = v[0](**v[1])
+
+      self.set_default()
+
+      self._text = ""
+
+      # stores what we would write out if the default was set
+      self._defwrite = ""
+      if not self._default is None:
+         self._defwrite = self.write(name="%%NAME%%")
+
+   def set_default(self):
+      """Sets the default value of the object."""
+
+      if not self._default is None:
+         self.store(self._default)
+      elif not hasattr(self, 'value'):
+         self.value = None #Makes sure we don't get exceptions when we
+                           #look for self.value
+
+      self._explicit = False #Since the value was not set by the user
+
+   def store(self, value=None):
+      """Dummy function for storing data."""
+
+      self._explicit = True
+      pass
+
+   def fetch(self):
+      """Dummy function to retrieve data."""
+
+      self.check()
+      pass
+
+   def check(self):
+      """Base function to check for input errors.
+
+      Raises:
+         ValueError: Raised if the user does not specify a required field.
+      """
+
+      if not (self._explicit or self._optional):
+         raise ValueError("Uninitialized Input value of type " + type(self).__name__)
+
+   def extend(self, name,  xml):
+      """ Dynamically add elements to the 'extra' list.
+
+      Picks from one of the templates in the self.dynamic dictionary, then
+      parses.
+
+      Args:
+         name: The tag name of the dynamically stored tag.
+         xml: The xml_node object used to parse the data stored in the tags.
+      """
+
+      newfield = self.dynamic[name][0](**self.dynamic[name][1])
+      newfield.parse(xml)
+      self.extra.append((name,newfield))
+
+   def write(self, name="", indent="", text="\n"):
+      """Writes data in xml file format.
+
+      Writes the tag, attributes, data and closing tag appropriate to the
+      particular fields and attribs data. Writes in a recursive manner, so
+      that objects contained in the fields dictionary have their write function
+      called, so that their tags are written between the start and end tags
+      of this object, as is required for the xml format.
+
+      This also adds an indent to the lower levels of the xml heirarchy,
+      so that it is easy to see which tags contain other tags.
+
+      Args:
+         name: An optional string giving the tag name. Defaults to "".
+         indent: An optional string giving the string to be added to the start
+            of the line, so usually a number of tabs. Defaults to "".
+         text: Additional text to be output between the tags.
+
+      Returns:
+         A string giving all the data contained in the fields and attribs
+         dictionaries, in the appropriate xml format.
+      """
+
+      rstr = indent + "<" + name;
+      for a in self.attribs:
+         # only write out attributes that are not defaults
+         # have a very simple way to check whether they actually add something:
+         # we compare with the string that would be output if the argument was set
+         # to its default
+         defstr = self.__dict__[a]._defwrite.replace("%%NAME%%",a)
+         outstr = self.__dict__[a].write(name=a)
+         if outstr != defstr:
+            rstr += " " + outstr
+      rstr += ">"
+      rstr += text
+      for f in self.fields:
+         #only write out fields that are not defaults
+
+         defstr = self.__dict__[f]._defwrite.replace("%%NAME%%",f)
+         if defstr != self.__dict__[f].write(f):   # here we must compute the write string twice not to be confused by indents.
+            rstr += self.__dict__[f].write(f, "   " + indent)
+
+      for (f,v) in self.extra:
+         # also write out extended (dynamic) fields if present
+         rstr += v.write(f, "   " + indent)
+
+      if text.find('\n') >= 0:
+         rstr += indent + "</" + name + ">\n"
+      else:
+         rstr += "</" + name + ">\n"
+      return rstr
+
+   def parse(self, xml=None, text=""):
+      """Parses an xml file.
+
+      Uses the xml_node class defined in io_xml to read all the information
+      contained within the root tags, and uses it to give values for the attribs
+      and fields data recursively. It does this by giving all the data between
+      the appropriate field tag to the appropriate field restart object as a
+      string, and the appropriate attribute data to the appropriate attribs
+      restart object as a string. These data are then parsed by these objects
+      until all the information is read, or an input error is found.
+
+      Args:
+         xml: An xml_node object containing all the data for the parent
+            tag.
+         text: The data held between the start and end tags.
+
+      Raises:
+         NameError: Raised if one of the tags in the xml input file is
+            incorrect.
+         ValueError: Raised if the user does not specify a required field.
+      """
+
+      # before starting, sets everything to its default -- if a default is set!
+      for a in self.attribs:
+         self.__dict__[a].set_default()
+      for f in self.fields:
+         self.__dict__[f].set_default()
+
+      self.extra = []
+      self._explicit = True
+      if xml is None:
+         self._text = text
+      else:
+         for a, v in xml.attribs.iteritems():
+            if a in self.attribs:
+               self.__dict__[a].parse(text=v)
+            elif a == "_text":
+               pass
+            else:
+               raise NameError("Attribute name '" + a + "' is not a recognized property of '" + xml.name + "' objects")
+
+         for (f, v) in xml.fields: #reads all field and dynamic data.
+            if f in self.fields:
+               self.__dict__[f].parse(xml=v)
+            elif f == "_text":
+               self._text = v
+            elif f in self.dynamic:
+               self.extend(f, v)
+            else:
+               raise NameError("Tag name '" + f + "' is not a recognized property of '" + xml.name + "' objects")
+
+         #checks for missing arguments.
+         for a in self.attribs:
+            va = self.__dict__[a]
+            if not (va._explicit or va._optional):
+               raise ValueError("Attribute name '" + a + "' is mandatory and was not found in the input for the property " + xml.name)
+         for f in self.fields:
+            vf = self.__dict__[f]
+            if not (vf._explicit or vf._optional):
+               raise ValueError("Field name '" + f + "' is mandatory and was not found in the input for the property " + xml.name)
+
+   def detail_str(self):
+      """Prints out the supplementary information about a particular input class.
+
+      Used to print out the dimensions, default value, possible options and data
+      type of an input value to the LaTeX helf file.
+      """
+
+      xstr = ""
+      if hasattr(self, '_dimension') and self._dimension != "undefined": #gives dimension
+         xstr += "dimension: " + self._dimension + "; "
+
+      if self._default != None and issubclass(self.__class__, InputAttribute):
+         #We only print out the default if it has a well defined value.
+         #For classes such as InputCell, self._default is not the value,
+         #instead it is an object that is stored to give the default value in
+         #self.value. For this reason we print out self.value at this stage,
+         #and not self._default
+         xstr += "default: " + self.pprint(self.value) + "; "
+
+      if issubclass(self.__class__, InputAttribute):
+         #if possible, prints out the type of data that is being used
+         xstr += "data type: " + self.type_print(self.type) + "; "
+
+      if hasattr(self, "_valid"):
+         if self._valid is not None:
+            xstr += "options: " #prints out valid options, if
+            for option in self._valid:      #required.
+               xstr += "`" + str(option) + "', "
+            xstr = xstr.rstrip(", ")
+            xstr +=  "; "
+      return xstr
+
+   def help_latex(self, name="", level=0, stop_level=None, standalone=True):
+      """Function to generate a LaTeX formatted help file.
+
+      Args:
+         name: Name of the tag that has to be written out.
+         level: Current level of the hierarchy being considered.
+         stop_level: The depth to which information will be given. If not given,
+            will give all information.
+         standalone: A boolean giving whether the latex file produced will be a
+            stand-alone document, or will be intended as a section of a larger
+            document with cross-references between the different sections.
+
+      Returns:
+         A LaTeX formatted string.
+      """
+
+      #stops when we've printed out the prerequisite number of levels
+      if (not stop_level is None and level > stop_level):
+         return ""
+
+      rstr = ""
+      if level == 0:
+         if standalone:
+            #assumes that it is a stand-alone document, so must have
+            #document options.
+            rstr += r"\documentclass[12pt,fleqn]{report}"
+            rstr += r"""
+\usepackage{etoolbox}
+\usepackage{suffix}
+
+\newcommand{\ipiitem}[3]{%
+\setul{1pt}{.4pt}\ifblank{#1}{}{\ifstrequal{#1}{\underline{\smash{}}}{}{
+{\noindent\textbf{#1}:\rule{0.0pt}{1.05\baselineskip}\quad}}}% uses a strut to add a bit of vertical space
+{#2}\parskip=0pt\par
+\ifblank{#3}{}%
+{ {\hfill\raggedleft\textit{\small #3}\par} }
+}
+
+\makeatletter
+\newenvironment{ipifield}[4]{%
+                \ifblank{#1}{}{\vspace{0.5em}}
+               \noindent\parskip=0pt\begin{tabular}[t]{|p{1.0\linewidth}}
+               %cell without border
+               \multicolumn{1}{@{}p{1.0\linewidth}}{
+               \ipiitem{\underline{\smash{#1}}}{#2}{}
+               \ifblank{#4}{ %
+                  \ifblank{#3}{}{{\hfill\raggedleft\textit{\small #3}}\par}}{} } \vspace{-1em}\\ %
+               % cell with border
+               \ifblank{#4}{} %
+                 { \ifblank{#3}{}{\vspace{-1em}{\hfill\raggedleft\textit{\small #3}}\par} %
+                 {#4}\vspace{-1em}\\\hline } % negative vspace to undo the line break
+               \end{tabular}
+               \parskip=0pt\list{}{\listparindent 1.5em%
+                        \leftmargin    \listparindent
+                        \rightmargin   0pt
+                        \parsep        0pt
+                        \itemsep       0pt
+                        \topsep        0pt
+                        }%
+                \item\relax
+                }
+               {\endlist}
+\makeatother
+"""
+            rstr += "\n\\begin{document}\n"
+         if self._label != "" and not standalone:
+            #assumes that it is part of a cross-referenced document, so only
+            #starts a new section.
+            rstr += "\\section{" + self._label + "}\n"
+            rstr += "\\label{" + self._label + "}\n"
+
+         rstr += "\\begin{ipifield}{}%\n"
+      else:
+         if self._label != "" and not standalone:
+            rstr += "\\begin{ipifield}{\hyperref["+self._label+"]{"+name+"}}%\n"
+         else:
+            rstr += "\\begin{ipifield}{"+name+"}%\n"
+
+      rstr += "{"+self._help+"}%\n"
+
+      rstr += "{"+self.detail_str()+"}%\n"
+
+      rstr += "{"
+      # Prints out the attributes
+      if len(self.attribs) != 0:
+         #don't print out units if not necessary
+         if len(self.attribs) == 1 and (("units" in self.attribs) and self._dimension == "undefined"):
+            pass
+         else:
+            for a in self.attribs:
+               #don't print out units if not necessary
+               if not (a == "units" and self._dimension == "undefined"):
+                  rstr += "\\ipiitem{" + a + "}%\n{" + self.__dict__[a]._help + "}%\n{"+self.__dict__[a].detail_str()+"}%\n"  #!!MUST ADD OTHER STUFF
+      rstr+="}\n"
+
+      #As above, for the fields. Only prints out if we have not reached the
+      #user-specified limit.
+      if len(self.fields) != 0 and level != stop_level:
+         for f in self.fields:
+            rstr += self.__dict__[f].help_latex(name=f, level=level+1, stop_level=stop_level, standalone=standalone)
+
+      if len(self.dynamic) != 0 and level != stop_level:
+         for f, v in self.dynamic.iteritems():
+            dummy_obj = v[0](**v[1])
+            rstr += dummy_obj.help_latex(name=f, level=level+1, stop_level=stop_level, standalone=standalone)
+
+      rstr += "\\end{ipifield}\n"
+      if level == 0 and standalone:
+         #ends the created document if it is not part of a larger document
+         rstr += "\\end{document}"
+
+      #Some escape characters are necessary for the proper latex formatting
+      rstr = rstr.replace('_', '\\_')
+      rstr = rstr.replace('\\\\_', '\\_')
+      rstr = rstr.replace('...', '\\ldots ')
+      rstr = rstr.replace('<', '$<$')
+      rstr = rstr.replace('>', '$>$')
+
+      return rstr
+
+   def pprint(self, default, indent="", latex = True):
+      """Function to convert arrays and other objects to human-readable strings.
+
+      Args:
+         default: The object that needs to be converted to a string.
+         indent: The indent at the beginning of a line.
+         latex: A boolean giving whether the string will be latex-format.
+
+      Returns:
+         A formatted string.
+      """
+
+      if type(default) is np.ndarray:
+         if default.shape == (0,):
+            return " [ ] " #proper treatment of empty arrays.
+         else:
+            #indents new lines for multi-D arrays properly
+            rstr = "\n" + indent + "      "
+            rstr += str(default).replace("\n", "\n" + indent + "      ")
+            if not latex:
+               rstr += "\n" + indent + "   "
+
+            return rstr
+      elif type(default) == str:
+         if latex:
+            return "`" + default + "'" #indicates that it is a string
+         else:
+            return " " + default + " "
+      elif default == []:
+         return " [ ] "
+      elif default == {}:
+         if latex:
+            return " \\{ \\} " #again, escape characters needed for latex
+         else:               #formatting
+            return " { } "
+      else:
+         #in most cases standard formatting will do
+         return " " + str(default) + " "
+
+   def type_print(self, dtype):
+      """Function to convert a data types to human-readable strings.
+
+      Args:
+         dtype: A data type.
+      """
+
+      if dtype == bool:
+         return "boolean"
+      elif dtype == float or dtype == np.float64:
+         return "float"
+      elif dtype == int or dtype == np.uint64 or dtype == np.int64:
+         return "integer"
+      elif dtype == dict:
+         return "dictionary"
+      elif dtype == str:
+         return "string"
+      elif dtype == tuple:
+         return "tuple"
+      else:
+         raise TypeError("Unrecognized data type " + str(dtype))
+
+   def help_xml(self, name="", indent="", level=0, stop_level=None):
+      """Function to generate an xml formatted help file.
+
+      Args:
+         name: A string giving the name of the root node.
+         indent: The indent at the beginning of a line.
+         level: Current level of the hierarchy being considered.
+         stop_level: The depth to which information will be given. If not given,
+            all information will be given
+
+      Returns:
+         An xml formatted string.
+      """
+
+      #stops when we've printed out the prerequisite number of levels
+      if (not stop_level is None and level > stop_level):
+         return ""
+
+      #these are booleans which tell us whether there are any attributes
+      #and fields to print out
+      show_attribs = (len(self.attribs) != 0)
+      show_fields = (not (len(self.fields) == 0 and len(self.dynamic) == 0)) and level != stop_level
+
+      rstr = ""
+      rstr = indent + "<" + name; #prints tag name
+      for a in self.attribs:
+         if not (a == "units" and self._dimension == "undefined"):
+            #don't print out units if not necessary
+            rstr += " " + a + "=''" #prints attribute names
+      rstr += ">\n"
+
+      #prints help string
+      rstr += indent + "   <help> " + self._help + " </help>\n"
+      if show_attribs:
+         for a in self.attribs:
+            if not (a == "units" and self._dimension == "undefined"):
+               #information about tags is found in tags beginning with the name
+               #of the attribute
+               rstr += indent + "   <" + a + "_help> " + self.__dict__[a]._help + " </" + a + "_help>\n"
+
+      #prints dimensionality of the object
+      if hasattr(self, '_dimension') and self._dimension != "undefined":
+         rstr += indent + "   <dimension> " + self._dimension + " </dimension>\n"
+
+      if self._default != None and issubclass(self.__class__, InputAttribute):
+         #We only print out the default if it has a well defined value.
+         #For classes such as InputCell, self._default is not the value,
+         #instead it is an object that is stored, putting the default value in
+         #self.value. For this reason we print out self.value at this stage,
+         #and not self._default
+         rstr += indent + "   <default>" + self.pprint(self.value, indent=indent, latex=False) + "</default>\n"
+      if show_attribs:
+         for a in self.attribs:
+            if not (a == "units" and self._dimension == "undefined"):
+               if self.__dict__[a]._default is not None:
+                  rstr += indent + "   <" + a + "_default>" + self.pprint(self.__dict__[a]._default, indent=indent, latex=False) + "</" + a + "_default>\n"
+
+      #prints out valid options, if required.
+      if hasattr(self, "_valid"):
+         if self._valid is not None:
+            rstr += indent + "   <options> " + str(self._valid) + " </options>\n"
+      if show_attribs:
+         for a in self.attribs:
+            if not (a == "units" and self._dimension == "undefined"):
+               if hasattr(self.__dict__[a], "_valid"):
+                  if self.__dict__[a]._valid is not None:
+                     rstr += indent + "   <" + a + "_options> " + str(self.__dict__[a]._valid) + " </" + a + "_options>\n"
+
+      #if possible, prints out the type of data that is being used
+      if issubclass(self.__class__, InputAttribute):
+         rstr += indent + "   <dtype> " + self.type_print(self.type) + " </dtype>\n"
+      if show_attribs:
+         for a in self.attribs:
+            if not (a == "units" and self._dimension == "undefined"):
+               rstr += indent + "   <" + a + "_dtype> " + self.type_print(self.__dict__[a].type) + " </" + a + "_dtype>\n"
+
+      #repeats the above instructions for any fields or dynamic tags.
+      #these will only be printed if their level in the hierarchy is not above
+      #the user specified limit.
+      if show_fields:
+         for f in self.fields:
+            rstr += self.__dict__[f].help_xml(f, "   " + indent, level+1, stop_level)
+         for f, v in self.dynamic.iteritems():
+            #we must create the object manually, as dynamic objects are
+            #not automatically added to the input object's dictionary
+            dummy_obj = v[0](**v[1])
+            rstr += dummy_obj.help_xml(f, "   " + indent, level+1, stop_level)
+
+      rstr += indent + "</" + name + ">\n"
+      return rstr
+
+
+class InputAttribute(Input):
+   """Class for handling attribute data.
+
+   Has the methods for dealing with attribute data of the form:
+   <tag_name attrib='data'> ..., where data is just a value. Takes the data and
+   converts it to the required data_type, so that it can be used in the
+   simulation.
+
+   Attributes:
+      type: Data type of the data.
+      value: Value of data. Also specifies data type if type is None.
+      _valid: An optional list of valid options.
+   """
+
+   def __init__(self,  help=None, default=None, dtype=None, options=None):
+      """Initialises InputAttribute.
+
+      Args:
+         help: A help string.
+         default: A default value.
+         dtype: An optional data type. Defaults to None.
+         options: An optional list of valid options.
+      """
+
+      if not dtype is None:
+         self.type = dtype
+      else:
+         raise TypeError("You must provide dtype")
+
+      super(InputAttribute,self).__init__(help, default)
+
+      if options is not None:
+         self._valid = options
+         if not default is None and not self._default in self._valid:
+            #This makes sure that the programmer has set the default value
+            #so that it is a valid value.
+            raise ValueError("Default value '" + str(self._default) + "' not in option list " + str(self._valid)+ "\n" + self._help)
+      else:
+         self._valid = None
+
+   def parse(self, text=""):
+      """Reads the data for a single attribute value from an xml file.
+
+      Args:
+         text: The data held between the start and end tags.
+      """
+
+      super(InputAttribute, self).parse(text=text)
+
+      self.value = read_type(self.type, self._text)
+
+   def store(self, value):
+      """Stores the input data.
+
+      Args:
+         value: The raw data to be stored.
+      """
+      super(InputAttribute,self).store(value)
+      self.value = value
+
+   def fetch(self):
+      """Returns the stored data."""
+
+      super(InputAttribute,self).fetch()
+      return self.value
+
+   def check(self):
+      """Function to check for input errors.
+
+      Raises:
+         ValueError: Raised if the value chosen is not one of the valid options.
+      """
+
+      super(InputAttribute,self).check()
+      if not (self._valid is None or self.value in self._valid):
+         #This checks that the user has set the value to a valid value.
+         raise ValueError(str(self.value) + " is not a valid option (" + str(self._valid) + ")")
+
+   def write(self, name=""):
+      """Writes data in xml file format.
+
+      Writes the attribute data in the appropriate format.
+
+      Args:
+         name: An optional string giving the attribute name. Defaults to "".
+
+      Returns:
+         A string giving the stored value in the appropriate format.
+      """
+
+      return name + "='" + write_type(self.type, self.value) + "'"
+
+
+class InputValue(InputAttribute):
+   """Scalar class for input handling.
+
+   Has the methods for dealing with simple data tags of the form:
+   <tag_name> data </tag_name>, where data is just a value. Takes the data and
+   converts it to the required data_type, so that it can be used in the
+   simulation.
+
+   Attributes:
+      units: The units that the input data is given in.
+      _dimension: The dimensionality of the data.
+   """
+
+   default_dimension = "undefined"
+   default_units = ""
+
+   attribs= { "units" : ( InputAttribute, { "dtype" : str, "help" : "The units the input data is given in.", "default" : default_units } ) }
+
+   def __init__(self,  help=None, default=None, dtype=None, options=None, dimension=None):
+      """Initialises InputValue.
+
+      Args:
+         help: A help string.
+         dimension: The dimensionality of the value.
+         default: A default value.
+         dtype: An optional data type. Defaults to None.
+         options: An optional list of valid options.
+      """
+
+      # a note on units handling:
+      # 1) units are only processed at parse/fetch time:
+      #    internally EVERYTHING is in internal units
+      # 2) if one adds an explicit "units" attribute to a derived class,
+      #    the internal units handling will be just ignored
+      if dimension is None:
+         self._dimension = self.default_dimension
+      else:
+         self._dimension = dimension
+
+      super(InputValue,self).__init__(help, default, dtype, options)
+
+   def store(self, value, units=""):
+      """Converts the data to the appropriate data type and units and stores it.
+
+      Args:
+         value: The raw data to be stored.
+         units: Optional string giving the units that the data should be stored
+            in.
+      """
+
+      super(InputValue,self).store(value)
+
+      if units != "":
+         self.units.store(units) #User can define in the code the units to be
+                                 #printed
+
+      self.value = value
+      if self._dimension != "undefined":
+         self.value *= unit_to_user(self._dimension, units, 1.0)
+
+   def fetch(self):
+      """Returns the stored data in the user defined units."""
+
+      super(InputValue,self).fetch()
+
+      rval = self.value
+      if self._dimension != "undefined":
+         rval *= unit_to_internal(self._dimension, self.units.fetch(), 1.0)
+      return rval
+
+   def write(self, name="", indent=""):
+      """Writes data in xml file format.
+
+      Writes the data in the appropriate format between appropriate tags.
+
+      Args:
+         name: An optional string giving the tag name. Defaults to "".
+         indent: An optional string giving the string to be added to the start
+            of the line, so usually a number of tabs. Defaults to "".
+
+      Returns:
+         A string giving the stored value in the appropriate xml format.
+      """
+
+      return Input.write(self, name=name, indent=indent, text=write_type(self.type, self.value))
+
+   def parse(self, xml=None, text=""):
+      """Reads the data for a single value from an xml file.
+
+      Args:
+         xml: An xml_node object containing the all the data for the parent
+            tag.
+         text: The data held between the start and end tags.
+      """
+
+      Input.parse(self, xml=xml, text=text)
+      self.value = read_type(self.type, self._text)
+
+
+ELPERLINE = 5
+class InputArray(InputValue):
+   """Array class for input handling.
+
+   Has the methods for dealing with simple data tags of the form:
+   <tag_name shape="(shape)"> data </tag_name>, where data is an array
+   of the form [data[0], data[1], ... , data[length]].
+
+   Takes the data and converts it to the required data type,
+   so that it can be used in the simulation. Also holds the shape of the array,
+   so that we can use a simple 1D list of data to specify a multi-dimensional
+   array.
+
+   Attributes:
+      shape: The shape of the array.
+   """
+
+   attribs = copy(InputValue.attribs)
+   attribs["shape"] = (InputAttribute,  {"dtype": tuple,  "help": "The shape of the array.", "default": (0,)})
+
+   def __init__(self,  help=None, default=None, dtype=None, dimension=None):
+      """Initialises InputArray.
+
+      Args:
+         help: A help string.
+         dimension: The dimensionality of the value.
+         default: A default value.
+         dtype: An optional data type. Defaults to None.
+      """
+
+      super(InputArray,self).__init__(help, default, dtype, dimension=dimension)
+
+   def store(self, value, units=""):
+      """Converts the data to the appropriate data type, shape and units and
+      stores it.
+
+      Args:
+         value: The raw data to be stored.
+         units: Optional string giving the units that the data should be stored
+            in.
+      """
+
+      super(InputArray,self).store(value=np.array(value, dtype=self.type).flatten().copy(), units=units)
+      self.shape.store(value.shape)
+
+      #if the shape is not specified, assume the array is linear.
+      if self.shape.fetch() == (0,):
+         self.shape.store((len(self.value),))
+
+   def fetch(self):
+      """Returns the stored data in the user defined units."""
+
+      value = super(InputArray,self).fetch()
+
+      #if the shape is not specified, assume the array is linear.
+      if self.shape.fetch() == (0,):
+         value = np.resize(self.value,0).copy()
+      else:
+         value = self.value.reshape(self.shape.fetch()).copy()
+
+      return value
+
+   def write(self, name="", indent=""):
+      """Writes data in xml file format.
+
+      Writes the data in the appropriate format between appropriate tags. Note
+      that only ELPERLINE values are printed on each line if there are more
+      than this in the array. If the values are floats, or another data type
+      with a fixed width of data output, then they are aligned in columns.
+
+      Args:
+         name: An optional string giving the tag name. Defaults to "".
+         indent: An optional string giving the string to be added to the start
+            of the line, so usually a number of tabs. Defaults to "".
+
+      Returns:
+         A string giving the stored value in the appropriate xml format.
+      """
+
+      rstr = ""
+      if (len(self.value) > ELPERLINE):
+         rstr += "\n" + indent + " [ "
+      else:
+         rstr += " [ " #inlines the array if it is small enough
+
+      for i, v in enumerate(self.value):
+         if (len(self.value) > ELPERLINE and i > 0 and i%ELPERLINE == 0):
+            rstr += "\n" + indent + "   "
+         rstr += write_type(self.type, v) + ", "
+
+      rstr = rstr.rstrip(", ") #get rid of trailing commas
+      if (len(self.value) > ELPERLINE):
+         rstr += " ]\n"
+      else:
+         rstr += " ] "
+
+      return Input.write(self, name=name, indent=indent, text=rstr)
+
+   def parse(self, xml=None, text=""):
+      """Reads the data for an array from an xml file.
+
+      Args:
+         xml: An xml_node object containing the all the data for the parent
+            tag.
+         text: The data held between the start and end tags.
+      """
+
+      Input.parse(self, xml=xml, text=text)
+      self.value = read_array(self.type, self._text)
+
+      #if the shape is not specified, assume the array is linear.
+      if self.shape.fetch() == (0,):
+         self.shape.store((len(self.value),))
diff --git a/tools/i-pi/ipi/utils/io/README b/tools/i-pi/ipi/utils/io/README
new file mode 100644
index 0000000000000000000000000000000000000000..d70ff09ddd247b96635120c90ee20b3aebbe6c60
--- /dev/null
+++ b/tools/i-pi/ipi/utils/io/README
@@ -0,0 +1,12 @@
+ -- IO functions directory --
+
+ * This is the directory containing input/output functions.
+
+ * Files:
+   - io_binary.py: Contains the functions to write output in binary format.
+   - io_pdb.py: Contains the functions to read pdb structure files and to 
+      create pdb trajectory output files.
+   - io_xml.py: Contains the functions used to read the xml input file and
+      to format the restart output file.
+   - io_xyz.py: Contains the functions to read xyz structure files and to 
+      create xyz trajectory output files.
diff --git a/tools/i-pi/ipi/utils/io/__init__.py b/tools/i-pi/ipi/utils/io/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..01615a0d571feab781be7956f1d8b9f1d26fb2c7
--- /dev/null
+++ b/tools/i-pi/ipi/utils/io/__init__.py
@@ -0,0 +1 @@
+__all__ = [ "io_xml", "io_pdb" , "io_xyz", "io_binary" ]
diff --git a/tools/i-pi/ipi/utils/io/io_binary.py b/tools/i-pi/ipi/utils/io/io_binary.py
new file mode 100644
index 0000000000000000000000000000000000000000..6e8fbd83464eb4830f616193ee47bcfce519bd8d
--- /dev/null
+++ b/tools/i-pi/ipi/utils/io/io_binary.py
@@ -0,0 +1,47 @@
+"""Contains the functions used to print the trajectories and read input
+configurations (or even full status dump) as unformatted binary.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Functions:
+   print_bin: Prints an atomic configuration.
+"""
+
+__all__ = ['print_bin']
+
+import os
+import numpy as np
+import math, sys
+from ipi.utils.depend import depstrip
+
+def print_bin(atoms, cell, filedesc = sys.stdout, title=""):
+   """Prints the centroid configurations, into a binary file.
+
+   Args:
+      beads: An atoms object giving the centroid positions.
+      cell: A cell object giving the system box.
+      filedesc: An open writable file object. Defaults to standard output.
+      title: This gives a string to be appended to the comment line.
+   """
+
+   buff = filedesc # .buffer
+   cell.h.tofile(buff)
+   nat = np.asarray([atoms.natoms])
+   nat.tofile(buff)
+   atoms.names.tofile(buff)
+   atoms.q.tofile(buff)
+
diff --git a/tools/i-pi/ipi/utils/io/io_pdb.py b/tools/i-pi/ipi/utils/io/io_pdb.py
new file mode 100644
index 0000000000000000000000000000000000000000..b3ce8fc2029100054c4570f9fc1b81d1607b16ee
--- /dev/null
+++ b/tools/i-pi/ipi/utils/io/io_pdb.py
@@ -0,0 +1,173 @@
+"""Contains the functions used to print the trajectories and read input
+configurations with pdb formatting.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Functions:
+   print_pdb_path: Prints all the bead configurations, and shows the ring
+      polymer connectivity.
+   print_pdb: Prints the centroid configurations.
+   read_pdb: Reads the cell parameters and atom configurations from a pdb file.
+"""
+
+__all__ = ['print_pdb_path', 'print_pdb', 'read_pdb']
+
+import numpy as np
+import sys
+import ipi.utils.mathtools as mt
+from ipi.utils.depend  import depstrip
+from ipi.engine.cell   import Cell
+from ipi.engine.atoms  import Atoms
+from ipi.utils.units   import *
+
+def print_pdb_path(beads, cell, filedesc = sys.stdout):
+   """Prints all the bead configurations, into a pdb formatted file.
+
+   Prints the ring polymer springs as well as the bead positions using the
+   CONECT command. Also prints the cell parameters in standard pdb form. Note
+   that the angles are in degrees.
+
+   Args:
+      beads: A beads object giving the bead positions.
+      cell: A cell object giving the system box.
+      filedesc: An open writable file object. Defaults to standard output.
+   """
+
+   a, b, c, alpha, beta, gamma = mt.h2abc_deg(cell.h)
+
+   z = 1 #What even is this parameter?
+   filedesc.write("CRYST1%9.3f%9.3f%9.3f%7.2f%7.2f%7.2f%s%4i\n" % (a, b, c, alpha, beta, gamma, " P 1        ", z))
+
+   natoms = beads.natoms
+   nbeads = beads.nbeads
+   for j in range(nbeads):
+      for i in range(natoms):
+         qs = depstrip(beads.q)
+         lab = depstrip(beads.names)
+         filedesc.write("ATOM  %5i %4s%1s%3s %1s%4i%1s   %8.3f%8.3f%8.3f%6.2f%6.2f          %2s%2i\n" % (j*natoms+i+1, lab[i],' ','  1',' ',1,' ', qs[j][3*i], qs[j][3*i+1], qs[j][3*i+2],0.0,0.0,'  ',0))
+
+   if nbeads > 1:
+      for i in range(natoms):
+         filedesc.write("CONECT%5i%5i\n" % (i+1, (nbeads-1)*natoms+i+1))
+      for j in range(nbeads-1):
+         for i in range(natoms):
+            filedesc.write("CONECT%5i%5i\n" % (j*natoms+i+1, (j+1)*natoms+i+1))
+
+   filedesc.write("END\n")
+
+def print_pdb(atoms, cell, filedesc = sys.stdout, title=""):
+   """Prints the atom configurations, into a pdb formatted file.
+
+   Also prints the cell parameters in standard pdb form. Note
+   that the angles are in degrees.
+
+   Args:
+      atoms: An atoms object giving the atom positions.
+      cell: A cell object giving the system box.
+      filedesc: An open writable file object. Defaults to standard output.
+      title: An optional string of max. 70 characters.
+   """
+
+
+   if title != "" :
+      filedesc.write("TITLE   %70s\n" % (title))
+
+   a, b, c, alpha, beta, gamma = mt.h2abc_deg(cell.h)
+
+   z = 1
+   filedesc.write("CRYST1%9.3f%9.3f%9.3f%7.2f%7.2f%7.2f%s%4i\n" % (a, b, c, alpha, beta, gamma, " P 1        ", z))
+
+   natoms = atoms.natoms
+   qs = depstrip(atoms.q)
+   lab = depstrip(atoms.names)
+   for i in range(natoms):
+      filedesc.write("ATOM  %5i %4s%1s%3s %1s%4i%1s   %8.3f%8.3f%8.3f%6.2f%6.2f          %2s%2i\n" % (i+1, lab[i], ' ', '  1', ' ', 1, ' ', qs[3*i], qs[3*i+1], qs[3*i+2], 0.0, 0.0, '  ', 0))
+
+   filedesc.write("END\n")
+
+def read_pdb(filedesc):
+   """Takes a pdb-style file and creates an Atoms and Cell object.
+
+   Args:
+      filedesc: An open readable file object from a pdb formatted file.
+
+   Returns:
+      An Atoms object with the appropriate atom labels, masses and positions,
+      and a Cell object with the appropriate cell dimensions and an estimate
+      of a reasonable cell mass.
+   """
+
+   header = filedesc.readline()
+   if "TITLE" in header: header = filedesc.readline()   # skip the comment field
+   if header == "":
+      raise EOFError("End of file or empty header in PDB file")
+
+   a = float(header[6:15])
+   b = float(header[15:24])
+   c = float(header[24:33])
+   alpha = float(header[33:40])
+   beta = float(header[40:47])
+   gamma = float(header[47:54])
+   alpha *= np.pi/180.0
+   beta *= np.pi/180.0
+   gamma *= np.pi/180.0
+   h = mt.abc2h(a, b, c, alpha, beta, gamma)
+   cell = Cell(h)
+
+   natoms = 0
+   body = filedesc.readline()
+   qatoms = []
+   names = []
+   masses = []
+   while (body.strip() != "" and body.strip() != "END"):
+      natoms += 1
+      name = body[12:16].strip()
+      names.append(name)
+      masses.append(Elements.mass(name))
+      x = float(body[31:39])
+      y = float(body[39:47])
+      z = float(body[47:55])
+      qatoms.append(x)
+      qatoms.append(y)
+      qatoms.append(z)
+
+      body = filedesc.readline()
+
+   atoms = Atoms(natoms)
+   atoms.q = np.asarray(qatoms)
+   atoms.names = np.asarray(names,dtype='|S4')
+   atoms.m = np.asarray(masses)
+
+   return atoms, cell
+
+def iter_pdb(filedesc):
+   """Takes a pdb-style file and yields one Atoms, Cell tuple after another.
+
+   Args:
+      filedesc: An open readable file object from a pdb formatted file.
+
+   Returns:
+      Generator over the pdb trajectory, that yields
+      (Atoms, Cell) tuple with the appropriate atom labels, masses and positions.
+   """
+
+   try:
+      while 1:
+         atoms, cell = read_pdb(filedesc)
+         yield atoms, cell
+   except EOFError:
+      pass
diff --git a/tools/i-pi/ipi/utils/io/io_xml.py b/tools/i-pi/ipi/utils/io/io_xml.py
new file mode 100644
index 0000000000000000000000000000000000000000..5e43854408c44247298277967e1d73cffa86686f
--- /dev/null
+++ b/tools/i-pi/ipi/utils/io/io_xml.py
@@ -0,0 +1,520 @@
+"""Contains the functions used to read the input file and print the checkpoint
+files with xml formatting.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Functions:
+   xml_node: Class to handle a particular xml tag.
+   xml_handler: Class giving general xml data reading methods. 
+   xml_parse_string: Parses a string made from a section of a xml input file.
+   xml_parse_file: Parses an entire xml input file.
+   read_type: Reads a string and outputs data of a specified type.
+   read_float: Reads a string and outputs a float.
+   read_int: Reads a string and outputs an integer.
+   read_bool: Reads a string and outputs a boolean.
+   read_list: Reads a string and outputs a list.
+   read_array: Reads a string and outputs an array.
+   read_tuple: Reads a string and outputs a tuple.
+   read_dict: Reads a string and outputs a dictionary.
+   write_type: Writes a string from data of a specified type.
+   write_list: Writes a string from a list.
+   write_tuple: Writes a string from a tuple.
+   write_float: Writes a string from a float.
+   write_bool: Writes a string from a boolean.
+   write_dict: Writes a string from a dictionary.
+"""
+
+__all__ = ['xml_node', 'xml_handler', 'xml_parse_string', 'xml_parse_file',
+           'read_type', 'read_float', 'read_int', 'read_bool', 'read_list',
+           'read_array', 'read_tuple', 'read_dict', 'write_type', 'write_list',
+           'write_tuple', 'write_float', 'write_bool', 'write_dict']
+
+from xml.sax import parseString, parse
+from xml.sax.handler import ContentHandler 
+import numpy as np
+import string
+
+class xml_node(object):
+   """Class to handle a particular xml tag.
+
+   Tags are generally written in the form 
+   <tag_name attribs="attrib_data"> main_data </tag_name>. This class holds
+   tag_name, attrib_data and main_data separately so they can be used to
+   create the objects with the appropriate names and data.
+
+   Attributes:
+      attribs: The attribute data for the tag.
+      fields: The rest of the data.
+      name: The tag name. 
+   """
+
+   def __init__(self, attribs=None, name="", fields=None):
+      """Initialises xml_node.
+
+      Args:
+         attribs: An optional dictionary giving attribute data. Defaults to {}.
+         fields: An optional dictionary holding all the data between the start
+            and end tags, including information about other nodes. 
+            Defaults to {}.
+         name: An optional string giving the tag name. Defaults to ''.
+      """
+
+      if attribs is None:
+         attribs = {}
+      if fields is None:
+         fields = []
+
+      self.attribs = attribs
+      self.name = name         
+      self.fields = fields
+
+
+class xml_handler(ContentHandler):
+   """Class giving general xml_reading methods.
+
+   Uses the standard python xml_reader to read the different kinds of data.
+   Keeps track of the heirarchial nature of an xml file by recording the level
+   of nesting, so that the correct data and attributes can be associated with 
+   the correct tag name. 
+
+   Attributes:
+      root: An xml_node object for the root node.
+      open: The list of the tags that the parser is currently between the start
+         and end tags of.
+      level: The level of nesting that the parser is currently at.
+      buffer: A list of the data found between the tags at the different levels
+         of nesting.
+   """
+
+   def __init__(self):
+      """Initialises xml_handler."""
+
+      #root xml node with all the data
+      self.root = xml_node(name="root", fields=[])
+      self.open = [self.root]
+      #current level of the hierarchy
+      self.level = 0
+      #Holds all the data between each of the tags.
+      #If level = 1, then buffer[0] holds all the data collected between the 
+      #root tags, and buffer[1] holds all the data collected between the 
+      #first child tag.
+      self.buffer = [[""]]
+      
+   def startElement(self, name, attrs): 
+      """Reads an opening tag.
+
+      Adds the opening tag to the list of open tags, adds a new space in the
+      buffer, reads the appropriate attributes and adds a new level to the 
+      heirarchy.
+
+      Args:
+         name: The tag_name.
+         attrs: The attribute data.
+      """
+
+      #creates a new node
+      newnode = xml_node(attribs=dict((k,attrs[k]) for k in attrs.keys()), name=name, fields=[])
+      #adds it to the list of open nodes
+      self.open.append(newnode)
+      #adds it to the list of fields of the parent tag
+      self.open[self.level].fields.append((name,newnode))
+      #gets ready to read new data
+      self.buffer.append([""])
+      self.level += 1      
+
+   def characters(self, data):
+      """Reads data.
+
+      Adds the data to the buffer of the current level of the heirarchy.
+      Data is read as a string, and needs to be converted to the required
+      type later.
+
+      Args:
+         data: The data to be read.
+      """
+
+      self.buffer[self.level].append(data)
+
+   def endElement(self, name):
+      """Reads a closing tag.
+
+      Once all the data has been read, and the closing tag found, the buffer
+      is read into the appropriate field.
+
+      Args:
+         name: The tag_name.
+      """
+
+      #all the text found between the tags stored in the appropriate xml_node
+      #object
+      self.buffer[self.level] = ''.join(self.buffer[self.level])
+      self.open[self.level].fields.append(("_text" , self.buffer[self.level]))
+      #'closes' the xml_node object, as we are no longer within its tags, so
+      #there is no more data to be added to it.
+      #Note that the xml_node is still held within the parent tag, so we
+      #no longer require this xml node object.
+      self.buffer.pop(self.level)
+      self.open.pop(self.level)
+      self.level -= 1
+
+def xml_parse_string(buf):
+   """Parses a string made from a section of a xml input file.
+
+   Args:
+      buf: A string in correct xml format.
+
+   Returns:
+      A xml_node for the root node of the file.
+   """
+
+   myhandle = xml_handler()
+   parseString(buf, myhandle)
+   return myhandle.root
+
+def xml_parse_file(stream):
+   """Parses an entire xml input file.
+
+   Args:
+      stream: A string describing a xml formatted file.
+
+   Returns:
+      A xml_node for the root node of the file.
+   """
+
+   myhandle = xml_handler()
+   parse(stream, myhandle)
+   return myhandle.root
+
+def read_type(type, data):
+   """Reads a string and outputs data of a specified type.
+
+   Args:
+      type: The data type of the target container.
+      data: The string to be read in.
+
+   Raises:
+      TypeError: Raised if it tries to read into a data type that has not been
+         implemented.
+
+   Returns:
+      An object of type type.
+   """
+
+   if not type in readtype_funcs:
+      raise TypeError("Conversion not available for given type")
+   return type(readtype_funcs[type](data))
+
+def read_float(data):
+   """Reads a string and outputs a float.
+
+   Args:
+      data: The string to be read in.
+
+   Raises: 
+      ValueError: Raised if the input data is not of the correct format.
+
+   Returns:
+      A float.
+   """
+
+   return float(data)
+
+def read_int(data):
+   """Reads a string and outputs a integer.
+
+   Args:
+      data: The string to be read in.
+
+   Raises: 
+      ValueError: Raised if the input data is not of the correct format.
+
+   Returns:
+      An integer.
+   """
+
+   return int(data)
+
+def read_bool(data):
+   """Reads a string and outputs a boolean.
+
+   Takes a string of the form 'true' or 'false', and returns the appropriate
+   boolean.
+
+   Args:
+      data: The string to be read in.
+
+   Raises:
+      ValueError: Raised if the string is not 'true' or 'false'.
+
+   Returns:
+      A boolean.
+   """
+
+
+   if data.strip().upper() == "TRUE":
+      return True
+   elif data.strip().upper() == "FALSE":
+      return False
+   else:
+      raise ValueError(data + " does not represent a bool value")
+
+def read_list(data, delims="[]", split=",", strip=" \n\t'"):
+   """Reads a formatted string and outputs a list.
+
+   The string must be formatted in the correct way.
+   The start character must be delimiters[0], the end character
+   must be delimiters[1] and each element must be split along 
+   the character split. Characters at the beginning or
+   end of each element in strip are ignored. The standard list format is of the
+   form '[array[0], array[1],..., array[n]]', which is used for actual lists.
+   Other formats are used for tuples and dictionaries.
+
+   Args:
+      data: The string to be read in. '[]' by default.
+      delims: A string of two characters giving the first and last character of
+         the list format. ',' by default.
+      split: The character between different elements of the list format.
+      strip: Characters to be removed from the beginning and end of each 
+         element. ' \n\t' by default.
+
+   Raises: 
+      ValueError: Raised if the input data is not of the correct format.
+
+   Returns:
+      A list of strings.
+   """
+
+   try:
+      begin = data.index(delims[0])
+      end = data.index(delims[1])
+   except ValueError:
+      raise ValueError("Error in list syntax: could not locate delimiters")
+   
+   rlist = data[begin+1:end].split(split)
+   for i in range(len(rlist)):
+      rlist[i] = rlist[i].strip(strip)
+
+   # handles empty lists correctly
+   if len(rlist) == 1 and rlist[0] == "":
+      rlist = [] 
+    
+   return rlist
+
+def read_array(dtype, data):
+   """Reads a formatted string and outputs an array.
+
+   The format is as for standard python arrays, which is
+   [array[0], array[1], ... , array[n]]. Note the use of comma separators, and 
+   the use of square brackets.
+
+   Args:
+      data: The string to be read in.
+      dtype: The data type of the elements of the target array.
+
+   Raises: 
+      ValueError: Raised if the input data is not of the correct format.
+
+   Returns:
+      An array of data type dtype.
+   """
+
+   rlist = read_list(data)
+   for i in range(len(rlist)):
+      rlist[i] = read_type(dtype,rlist[i])
+   
+   return np.array(rlist, dtype)
+
+def read_tuple(data, delims="()", split=",", strip=" \n\t'", arg_type=int):
+   """Reads a formatted string and outputs a tuple.
+
+   The format is as for standard python tuples, which is
+   (tuple[0], tuple[1], ... , tuple[n]). Note the comma 
+   separators, and the use of brackets.
+
+   Args:
+      data: The string to be read in.
+      delims: A string of two characters giving the first and last character of
+         the list format. ',' by default.
+      split: The character between different elements of the list format.
+      strip: Characters to be removed from the beginning and end of each 
+         element. ' \n\t' by default.
+      arg_type: The strings in the input will be converted, and a tuple 
+         of ar_type will be returned. 
+
+   Raises: 
+      ValueError: Raised if the input data is not of the correct format.
+
+   Returns:
+      A tuple of elements of the specified data type.
+   """
+
+   rlist = read_list(data, delims=delims, split=split, strip=strip)
+   return tuple([arg_type(i) for i in rlist])
+
+def read_dict(data, delims="{}", split=",", key_split=":", strip=" \n\t"):
+   """Reads a formatted string and outputs a dictionary.
+
+   The format is as for standard python dictionaries, which is
+   {keyword[0]: arg[0], keyword[1]: arg[1], ... , keyword[n]: arg[n]}. Note the
+   comma separators, and the use of curly brackets.
+
+   Args:
+      data: The string to be read in.
+      delims: A string of two characters giving the first and last character of
+         the list format. ',' by default.
+      split: The character between different elements of the list format.
+      key_split: The character between the key word and the value.
+      strip: Characters to be removed from the beginning and end of each 
+         element. ' \n\t' by default.
+
+   Raises: 
+      ValueError: Raised if the input data is not of the correct format.
+
+   Returns:
+      A dictionary of strings.
+   """
+
+   rlist = read_list(data, delims=delims, split=split, strip=strip)
+   def mystrip(data):
+      return data.strip(strip)
+   rdict = {}
+   for s in rlist:
+      rtuple = map(mystrip,s.split(key_split))      
+      if not len(rtuple) == 2:
+         raise ValueError("Format for a key:value format is wrong for item " + s)
+      rdict[rtuple[0]] = rtuple[1]
+      
+   return rdict   
+      
+readtype_funcs = {np.ndarray: read_array, dict: read_dict, float: read_float, int: read_int, bool: read_bool, str: string.strip, tuple: read_tuple, np.uint : read_int}
+
+def write_type(type, data):
+   """Writes a formatted string from a value of a specified type.
+
+   Args:
+      type: The data type of the value.
+      data: The value to be read in.
+
+   Raises:
+      TypeError: Raised if it tries to write from a data type that has not been
+         implemented.
+
+   Returns:
+      A formatted string.
+   """
+
+   if not type in writetype_funcs:
+      raise TypeError("Conversion not available for given type")
+   return writetype_funcs[type](data)
+
+def write_list(data, delims="[]"):
+   """Writes a formatted string from a list.
+
+   The format of the output is as for a standard python list, 
+   [list[0], list[1],..., list[n]]. Note the space after the commas, and the
+   use of square brackets.
+
+   Args:
+      data: The value to be read in.
+      delims: An optional string of two characters giving the first and last
+         character to be printed. Defaults to "[]".
+
+   Returns:
+      A formatted string.
+   """
+
+   rstr = delims[0]
+   
+   for v in data:
+      rstr += str(v) + ", "
+   
+   rstr = rstr.rstrip(", ")
+   rstr += delims[1]
+   return rstr
+
+def write_tuple(data):
+   """Writes a formatted string from a tuple.
+
+   The format of the output is as for a standard python tuple, 
+   (tuple[0], tuple[1],..., tuple[n]). Note the space after the commas, and the
+   use of brackets.
+
+   Args:
+      data: The value to be read in.
+
+   Returns:
+      A formatted string.
+   """
+
+   return write_list(data, delims="()")
+
+def write_float(data):
+   """Writes a formatted string from a float.
+
+   Floats are printed out in exponential format, to 8 decimal places and 
+   filling up any spaces under 16 not used with spaces.
+
+   For example 1.0 --> '  1.00000000e+00'
+
+   Args:
+      data: The value to be read in.
+
+   Returns:
+      A formatted string.
+   """
+
+   return "%16.8e" % (data)
+
+def write_bool(data):
+   """Writes a formatted string from a float.
+
+   Booleans are printed as a string of either ' true' or 'false'. Note that
+   both are printed out as exactly 5 characters.
+
+   Args:
+      data: The value to be read in.
+
+   Returns:
+      A formatted string.
+   """
+
+   return "%5.5s" % (str(data))
+
+def write_dict(data, delims="{}"):
+   """Writes a formatted string from a dictionary.
+
+   The format of the output is as for a standard python dictionary, 
+   {keyword[0]: arg[0], keyword[1]: arg[1],..., keyword[n]: arg[n]}. Note the 
+   space after the commas, and the use of curly brackets.
+
+   Args:
+      data: The value to be read in.
+      delims: An optional string of two characters giving the first and last
+         character to be printed. Defaults to "{}".
+
+   Returns:
+      A formatted string.
+   """
+
+   rstr = delims[0]
+   for v in data:
+      rstr += str(v) + ": " + str(data[v]) + ", "
+   rstr = rstr.strip(", ")
+   rstr += delims[1]
+   return rstr
+
+writetype_funcs = {float: write_float, dict: write_dict, int: str, bool: write_bool, str: string.strip, tuple: write_tuple, np.uint : str}
diff --git a/tools/i-pi/ipi/utils/io/io_xyz.py b/tools/i-pi/ipi/utils/io/io_xyz.py
new file mode 100644
index 0000000000000000000000000000000000000000..e5fe3e93b71c22121b8be623c408a4956d1ede14
--- /dev/null
+++ b/tools/i-pi/ipi/utils/io/io_xyz.py
@@ -0,0 +1,145 @@
+"""Contains the functions used to print the trajectories and read input
+configurations with xyz formatting.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Functions:
+   print_xyz_path: Prints all the bead configurations.
+   print_xyz: Prints the centroid configurations.
+   read_xyz: Reads the cell parameters and atom configurations from a xyz file.
+"""
+
+__all__ = ['print_xyz_path', 'print_xyz', 'read_xyz', 'iter_xyz']
+
+import numpy as np
+import math, sys
+import ipi.utils.mathtools as mt
+from ipi.utils.depend import depstrip
+from ipi.engine.atoms import Atoms
+from ipi.utils.units import *
+
+def print_xyz_path(beads, cell, filedesc = sys.stdout):
+   """Prints all the bead configurations, into a xyz formatted file.
+
+   Prints all the replicas for each time step separately, rather than all at
+   once.
+
+   Args:
+      beads: A beads object giving the bead positions.
+      cell: A cell object giving the system box.
+      filedesc: An open writable file object. Defaults to standard output.
+   """
+
+   a, b, c, alpha, beta, gamma = mt.h2abc_deg(cell.h)
+
+   natoms = beads.natoms
+   nbeads = beads.nbeads
+   for j in range(nbeads):
+      filedesc.write("%d\n# bead: %d CELL(abcABC): %10.5f  %10.5f  %10.5f  %10.5f  %10.5f  %10.5f \n" % (natoms, j, a, b, c, alpha, beta, gamma))
+      for i in range(natoms):
+         qs = depstrip(beads.q)
+         lab = depstrip(beads.names)
+         filedesc.write("%8s %12.5e %12.5e %12.5e\n" % (lab[i], qs[j][3*i], qs[j][3*i+1], qs[j][3*i+2]))
+
+def print_xyz(atoms, cell, filedesc = sys.stdout, title=""):
+   """Prints the centroid configurations, into a xyz formatted file.
+
+   Args:
+      atoms: An atoms object giving the centroid positions.
+      cell: A cell object giving the system box.
+      filedesc: An open writable file object. Defaults to standard output.
+      title: This gives a string to be appended to the comment line.
+   """
+
+   a, b, c, alpha, beta, gamma = mt.h2abc_deg(cell.h)
+
+   natoms = atoms.natoms
+   filedesc.write("%d\n# CELL(abcABC): %10.5f  %10.5f  %10.5f  %10.5f  %10.5f  %10.5f  %s\n" % ( natoms, a, b, c, alpha, beta, gamma, title))
+   # direct access to avoid unnecessary slow-down
+   qs = depstrip(atoms.q)
+   lab = depstrip(atoms.names)
+   for i in range(natoms):
+      filedesc.write("%8s %12.5e %12.5e %12.5e\n" % (lab[i], qs[3*i], qs[3*i+1], qs[3*i+2]))
+
+def read_xyz(filedesc):
+   """Takes a xyz-style file and creates an Atoms object.
+
+   Args:
+      filedesc: An open readable file object from a xyz formatted file.
+
+   Returns:
+      An Atoms object with the appropriate atom labels, masses and positions.
+   """
+
+   natoms = filedesc.readline()
+   if natoms == "":
+      raise EOFError("The file descriptor hit EOF.")
+   natoms = int(natoms)
+   comment = filedesc.readline()
+
+   qatoms = []
+   names = []
+   masses = []
+   iat = 0
+   while (iat < natoms):
+      body = filedesc.readline()
+      if body.strip() == "":
+         break
+      body = body.split()
+      name = body[0]
+      names.append(name)
+      masses.append(Elements.mass(name))
+      x = float(body[1])
+      y = float(body[2])
+      z = float(body[3])
+      qatoms.append(x)
+      qatoms.append(y)
+      qatoms.append(z)
+      iat += 1
+
+   if natoms != len(names):
+      raise ValueError("The number of atom records does not match the header of the xyz file.")
+
+   atoms = Atoms(natoms)
+#   for i in range(natoms):
+#      nat = atoms[i]
+#      nat.q = qatoms[i]
+#      nat.name = names[i]
+#      nat.m = Elements.mass(names[i])
+   atoms.q = np.asarray(qatoms)
+   atoms.names = np.asarray(names, dtype='|S4')
+   atoms.m = np.asarray(masses)
+
+   return atoms
+
+def iter_xyz(filedesc):
+   """Takes a xyz-style file and yields one Atoms object after another.
+
+   Args:
+      filedesc: An open readable file object from a xyz formatted file.
+
+   Returns:
+      Generator over the xyz trajectory, that yields
+      Atoms objects with the appropriate atom labels, masses and positions.
+   """
+
+   try:
+      while 1:
+         atoms = read_xyz(filedesc)
+         yield atoms
+   except EOFError:
+      pass
diff --git a/tools/i-pi/ipi/utils/mathtools.py b/tools/i-pi/ipi/utils/mathtools.py
new file mode 100644
index 0000000000000000000000000000000000000000..767feca53f32df9c7d0cda9de430583a51491445
--- /dev/null
+++ b/tools/i-pi/ipi/utils/mathtools.py
@@ -0,0 +1,343 @@
+"""Contains simple algorithms.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Functions:
+   matrix_exp: Computes the exponential of a square matrix via a Taylor series.
+   stab_cholesky: A numerically stable version of the Cholesky decomposition.
+   h2abc: Takes the representation of the system box in terms of an upper
+      triangular matrix of column vectors, and returns the representation in
+      terms of the lattice vector lengths and the angles between them
+      in radians.
+   h2abc_deg: Takes the representation of the system box in terms of an upper
+      triangular matrix of column vectors, and returns the representation in
+      terms of the lattice vector lengths and the angles between them in
+      degrees.
+   abc2h: Takes the representation of the system box in terms of the lattice
+      vector lengths and the angles between them, and returns the
+      representation in terms of an upper triangular lattice vector matrix.
+   invert_ut3x3: Inverts a 3*3 upper triangular matrix.
+   det_ut3x3(h): Finds the determinant of a 3*3 upper triangular matrix.
+   eigensystem_ut3x3: Finds the eigenvector matrix and eigenvalues of a 3*3
+      upper triangular matrix
+   exp_ut3x3: Computes the exponential of a 3*3 upper triangular matrix.
+   root_herm: Computes the square root of a positive-definite hermitian
+      matrix.
+   logsumlog: Routine to accumulate the logarithm of a sum
+"""
+
+__all__ = ['matrix_exp', 'stab_cholesky', 'h2abc', 'h2abc_deg', 'abc2h',
+           'invert_ut3x3', 'det_ut3x3', 'eigensystem_ut3x3', 'exp_ut3x3',
+            'root_herm', 'logsumlog' ]
+
+import numpy as np
+import math
+from ipi.utils.messages import verbosity, warning
+
+def logsumlog(lasa, lbsb):
+   """Computes log(|A+B|) and sign(A+B) given log(|A|), log(|B|),
+   sign(A), sign(B).
+
+   Args:
+      lasa: (log(|A|), sign(A)) as a tuple
+      lbsb: (log(|B|), sign(B)) as a tuple
+
+   Returns:
+      (log(|A+B|), sign(A+B)) as a tuple
+   """
+
+   (la,sa) = lasa
+   (lb,sb) = lbsb
+
+   if (la > lb):
+      sr = sa
+      lr = la + np.log(1.0 + sb*np.exp(lb-la))
+   else:
+      sr = sb
+      lr = lb + np.log(1.0 + sa*np.exp(la-lb))
+
+   return (lr,sr)
+
+def matrix_exp(M, ntaylor=15, nsquare=15):
+   """Computes the exponential of a square matrix via a Taylor series.
+
+   Calculates the matrix exponential by first calculating exp(M/(2**nsquare)),
+   then squaring the result the appropriate number of times.
+
+   Args:
+      M: Matrix to be exponentiated.
+      ntaylor: Optional integer giving the number of terms in the Taylor series.
+         Defaults to 15.
+      nsquare: Optional integer giving how many times the original matrix will
+         be halved. Defaults to 15.
+
+   Returns:
+      The matrix exponential of M.
+   """
+
+   n = M.shape[1]
+   tc = np.zeros(ntaylor+1)
+   tc[0] = 1.0
+   for i in range(ntaylor):
+      tc[i+1] = tc[i]/(i+1)
+
+   SM = np.copy(M)/2.0**nsquare
+
+   EM = np.identity(n,float)*tc[ntaylor]
+   for i in range(ntaylor-1,-1,-1):
+      EM = np.dot(SM,EM)
+      EM += np.identity(n)*tc[i]
+
+   for i in range(nsquare):
+      EM = np.dot(EM,EM)
+   return EM
+
+def stab_cholesky(M):
+   """ A numerically stable version of the Cholesky decomposition.
+
+   Used in the GLE implementation. Since many of the matrices used in this
+   algorithm have very large and very small numbers in at once, to handle a
+   wide range of frequencies, a naive algorithm can end up having to calculate
+   the square root of a negative number, which breaks the algorithm. This is
+   due to numerical precision errors turning a very tiny positive eigenvalue
+   into a tiny negative value.
+
+   Instead of this, an LDU decomposition is used, and any small negative numbers
+   in the diagonal D matrix are assumed to be due to numerical precision errors,
+   and so are replaced with zero.
+
+   Args:
+      M: The matrix to be decomposed.
+   """
+
+   n = M.shape[1]
+   D = np.zeros(n,float)
+   L = np.zeros(M.shape,float)
+   for i in range(n):
+      L[i,i] = 1.
+      for j in range(i):
+         L[i,j] = M[i,j]
+         for k in range(j):
+            L[i,j] -= L[i,k]*L[j,k]*D[k]
+         if (not D[j] == 0.0):
+            L[i,j] = L[i,j]/D[j]
+      D[i] = M[i,i]
+      for k in range(i):
+         D[i] -= L[i,k]*L[i,k]*D[k]
+
+   S = np.zeros(M.shape,float)
+   for i in range(n):
+      if (D[i]>0):
+         D[i] = math.sqrt(D[i])
+      else:
+         warning("Zeroing negative element in stab-cholesky decomposition: " + str(D[i]), verbosity.low)
+         D[i] = 0
+      for j in range(i+1):
+         S[i,j] += L[i,j]*D[j]
+   return S
+
+def h2abc(h):
+   """Returns a description of the cell in terms of the length of the
+      lattice vectors and the angles between them in radians.
+
+   Args:
+      h: Cell matrix in upper triangular column vector form.
+
+   Returns:
+      A list containing the lattice vector lengths and the angles between them.
+   """
+
+   a = float(h[0,0])
+   b = math.sqrt(h[0,1]**2 + h[1,1]**2)
+   c = math.sqrt(h[0,2]**2 + h[1,2]**2 + h[2,2]**2)
+   gamma = math.acos(h[0,1]/b)
+   beta = math.acos(h[0,2]/c)
+   alpha = math.acos(np.dot(h[:,1], h[:,2])/(b*c))
+
+   return a, b, c, alpha, beta, gamma
+
+def h2abc_deg(h):
+   """Returns a description of the cell in terms of the length of the
+      lattice vectors and the angles between them in degrees.
+
+   Args:
+      h: Cell matrix in upper triangular column vector form.
+
+   Returns:
+      A list containing the lattice vector lengths and the angles between them
+      in degrees.
+   """
+
+   (a, b, c, alpha, beta, gamma) = h2abc(h)
+   return a, b, c, alpha*180/math.pi, beta*180/math.pi, gamma*180/math.pi
+
+def abc2h(a, b, c, alpha, beta, gamma):
+   """Returns a lattice vector matrix given a description in terms of the
+   lattice vector lengths and the angles in between.
+
+   Args:
+      a: First cell vector length.
+      b: Second cell vector length.
+      c: Third cell vector length.
+      alpha: Angle between sides b and c in radians.
+      beta: Angle between sides a and c in radians.
+      gamma: Angle between sides b and a in radians.
+
+   Returns:
+      An array giving the lattice vector matrix in upper triangular form.
+   """
+
+   h = np.zeros((3,3) ,float)
+   h[0,0] = a
+   h[0,1] = b*math.cos(gamma)
+   h[0,2] = c*math.cos(beta)
+   h[1,1] = b*math.sin(gamma)
+   h[1,2] = (b*c*math.cos(alpha) - h[0,1]*h[0,2])/h[1,1]
+   h[2,2] = math.sqrt(c**2 - h[0,2]**2 - h[1,2]**2)
+   return h
+
+def invert_ut3x3(h):
+   """Inverts a 3*3 upper triangular matrix.
+
+   Args:
+      h: An upper triangular 3*3 matrix.
+
+   Returns:
+      The inverse matrix of h.
+   """
+
+   ih = np.zeros((3,3), float)
+   for i in range(3):
+      ih[i,i] = 1.0/h[i,i]
+   ih[0,1] = -ih[0,0]*h[0,1]*ih[1,1]
+   ih[1,2] = -ih[1,1]*h[1,2]*ih[2,2]
+   ih[0,2] = -ih[1,2]*h[0,1]*ih[0,0] - ih[0,0]*h[0,2]*ih[2,2]
+   return ih
+
+def eigensystem_ut3x3(p):
+   """Finds the eigenvector matrix of a 3*3 upper-triangular matrix.
+
+   Args:
+      p: An upper triangular 3*3 matrix.
+
+   Returns:
+      An array giving the 3 eigenvalues of p, and the eigenvector matrix of p.
+   """
+
+   eigp = np.zeros((3,3), float)
+   eigvals = np.zeros(3, float)
+
+   for i in range(3):
+      eigp[i,i] = 1
+   eigp[0,1] = -p[0,1]/(p[0,0] - p[1,1])
+   eigp[1,2] = -p[1,2]/(p[1,1] - p[2,2])
+   eigp[0,2] = -(p[0,1]*p[1,2] - p[0,2]*p[1,1] + p[0,2]*p[2,2])/((p[0,0] - p[2,2])*(p[2,2] - p[1,1]))
+
+   for i in range(3):
+      eigvals[i] = p[i,i]
+   return eigp, eigvals
+
+def det_ut3x3(h):
+   """Calculates the determinant of a 3*3 upper triangular matrix.
+
+   Note that the volume of the system box when the lattice vector matrix is
+   expressed as a 3*3 upper triangular matrix is given by the determinant of
+   this matrix.
+
+   Args:
+      h: An upper triangular 3*3 matrix.
+
+   Returns:
+      The determinant of h.
+   """
+
+   return h[0,0]*h[1,1]*h[2,2]
+
+MINSERIES=1e-8
+def exp_ut3x3(h):
+   """Computes the matrix exponential for a 3x3 upper-triangular matrix.
+
+   Note that for 3*3 upper triangular matrices this is the best method, as
+   it is stable. This is terms which become unstable as the
+   denominator tends to zero are calculated via a Taylor series in this limit.
+
+   Args:
+      h: An upper triangular 3*3 matrix.
+
+   Returns:
+      The matrix exponential of h.
+   """
+   eh = np.zeros((3,3), float)
+   e00 = math.exp(h[0,0])
+   e11 = math.exp(h[1,1])
+   e22 = math.exp(h[2,2])
+   eh[0,0] = e00
+   eh[1,1] = e11
+   eh[2,2] = e22
+
+   if (abs((h[0,0] - h[1,1])/h[0,0])>MINSERIES):
+      r01 = (e00 - e11)/(h[0,0] - h[1,1])
+   else:
+      r01 = e00*(1 + (h[0,0] - h[1,1])*(0.5 + (h[0,0] - h[1,1])/6.0))
+   if (abs((h[1,1] - h[2,2])/h[1,1])>MINSERIES):
+      r12 = (e11 - e22)/(h[1,1] - h[2,2])
+   else:
+      r12 = e11*(1 + (h[1,1] - h[2,2])*(0.5 + (h[1,1] - h[2,2])/6.0))
+   if (abs((h[2,2] - h[0,0])/h[2,2])>MINSERIES):
+      r02 = (e22 - e00)/(h[2,2] - h[0,0])
+   else:
+      r02 = e22*(1 + (h[2,2] - h[0,0])*(0.5 + (h[2,2] - h[0,0])/6.0))
+
+   eh[0,1] = h[0,1]*r01
+   eh[1,2] = h[1,2]*r12
+
+   eh[0,2] = h[0,2]*r02
+   if (abs((h[2,2] - h[0,0])/h[2,2])>MINSERIES):
+      eh[0,2] += h[0,1]*h[0,2]*(r01 - r12)/(h[0,0] - h[2,2])
+   elif (abs((h[1,1] - h[0,0])/h[1,1])>MINSERIES):
+      eh[0,2] += h[0,1]*h[0,2]*(r12 - r02)/(h[1,1] - h[0,0])
+   elif (abs((h[1,1]-h[2,2])/h[1,1])>MINSERIES):
+      eh[0,2] += h[0,1]*h[0,2]*(r02 - r01)/(h[2,2] - h[1,1])
+   else:
+      eh[0,2] += h[0,1]*h[0,2]*e00/24.0*(12.0 + 4*(h[1,1] + h[2,2] - 2*h[0,0]) + (h[1,1] - h[0,0])*(h[2,2] - h[0,0]))
+
+   return eh
+
+def root_herm(A):
+   """Gives the square root of a hermitian matrix with real eigenvalues.
+
+   Args:
+      A: A Hermitian matrix.
+
+   Returns:
+      A matrix such that itself matrix multiplied by its transpose gives the
+      original matrix.
+   """
+
+   if not (abs(A.T - A) < 1e-10).all():
+      raise ValueError("Non-Hermitian matrix passed to root_herm function")
+   eigvals, eigvecs = np.linalg.eigh(A)
+   ndgrs = len(eigvals)
+   diag = np.zeros((ndgrs,ndgrs))
+   for i in range(ndgrs):
+      if eigvals[i] >= 0:
+         diag[i,i] = math.sqrt(eigvals[i])
+      else:
+         warning("Zeroing negative element in matrix square root: " + str(eigvals[i]), verbosity.low)
+         diag[i,i] = 0
+   return np.dot(eigvecs, np.dot(diag, eigvecs.T))
+
diff --git a/tools/i-pi/ipi/utils/messages.py b/tools/i-pi/ipi/utils/messages.py
new file mode 100644
index 0000000000000000000000000000000000000000..928eb537a3f638d2ea5ffb5d4d102840cac6d7f8
--- /dev/null
+++ b/tools/i-pi/ipi/utils/messages.py
@@ -0,0 +1,155 @@
+"""Utility functions for outputting messages, diagnostics and errors'
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Classes:
+   Verbosity: Concise class to check the selected level of output
+
+Functions:
+   banner:    Prints the program welcome "screen"
+   help:      Prints the input syntax help
+   info:      Prints some information to standard output, depending on the level of verbosity
+   warning:   Same as info, but with a "!W!" prefix and optionally printing a stack trace
+"""
+
+import traceback, sys
+
+__all__ = ['Verbosity', 'verbosity',' help', 'banner', 'info', 'warning']
+
+
+VERB_QUIET  = 0
+VERB_LOW    = 1
+VERB_MEDIUM = 2
+VERB_HIGH   = 3
+VERB_DEBUG  = 4
+
+class Verbosity(object):
+   """Class used to determine what to print to standard output.
+
+   Attributes:
+      level: Determines what level of output to print.
+   """
+
+   level = "low"
+
+   def __getattr__(self, name):
+      """Determines whether a certain verbosity level is
+      less than or greater than the stored value.
+
+      Used to decide whether or not a certain info or warning string
+      should be output.
+
+      Args:
+         name: The verbosity level at which the info/warning string
+            will be output.
+      """
+
+      if name is "quiet":
+         return self.level >= VERB_QUIET
+      elif name is "low":
+         return self.level >= VERB_LOW
+      elif name is "medium":
+         return self.level >= VERB_MEDIUM
+      elif name is "high":
+         return self.level >= VERB_HIGH
+      elif name is "debug":
+         return self.level >= VERB_DEBUG
+
+   def __setattr__(self, name, value):
+      """Sets the verbosity level
+
+      Args:
+         name: The name of what to set. Should always be 'level'.
+         value: The value to set the verbosity to.
+
+      Raises:
+         ValueError: Raised if either the name or the level is not
+            a valid option.
+      """
+
+      if name == "level":
+         if value == "quiet":
+            level = VERB_QUIET
+         elif value == "low":
+            level = VERB_LOW
+         elif value == "medium":
+            level = VERB_MEDIUM
+         elif value == "high":
+            level = VERB_HIGH
+         elif value == "debug":
+            level = VERB_DEBUG
+         else: 
+            raise ValueError("Invalid verbosity level " + str(value) + " specified.")
+         super(Verbosity,self).__setattr__("level", level)
+
+
+verbosity = Verbosity()
+
+def help():
+   """Prints out a help string."""
+
+   print """usage:  %s input """%sys.argv[0]
+
+def banner():
+   """Prints out a banner."""
+
+   print """
+ ____       ____       ____       ____  
+/    \     /    \     /    \     /    \  
+|  #################################  | 
+\__#_/     \____/     \____/     \_#__/     
+   #    _        _______  _____    #                 
+   #   (_)      |_   __ \|_   _|   #       v. 1.0                       
+   #   __  ______ | |__) | | |     #                                         
+   Y  [  ||______||  ___/  | |     #      A Python interface for (ab initio)  
+  0 0  | |       _| |_    _| |_    #      (path integral) molecular dynamics. 
+   #  [___]     |_____|  |_____|   #
+ __#_       ____       ____       _#__                
+/  # \     /    \     /    \     / #  \                                      
+|  #################################  |                                      
+\____/     \____/     \____/     \____/        
+
+   """
+
+
+def info(text="", show=True ):
+   """Prints a warning message.
+
+   Args:
+      text: The text of the information message.
+      show: A boolean describing whether or not the message should be
+         printed.
+   """
+
+   if not show:
+      return
+   print text
+
+def warning(text="", show=True):
+   """Prints a warning message.
+
+   Args:
+      text: The text of the information message.
+      show: A boolean describing whether or not the message should be
+         printed.
+   """
+
+   if not show:
+      return
+   if verbosity.debug:
+      traceback.print_stack(file=sys.stdout)
+   print " !W! " + text
diff --git a/tools/i-pi/ipi/utils/nmtransform.py b/tools/i-pi/ipi/utils/nmtransform.py
new file mode 100644
index 0000000000000000000000000000000000000000..a8c258d522422b6a81b72c446d25ced5ba0fa55f
--- /dev/null
+++ b/tools/i-pi/ipi/utils/nmtransform.py
@@ -0,0 +1,283 @@
+"""Contains functions for doing the inverse and forward normal mode transforms.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Classes:
+   nm_trans: Uses matrix multiplication to do normal mode transformations.
+   nm_rescale: Uses matrix multiplication to do ring polymer contraction
+      or expansion.
+   nm_fft: Uses fast-Fourier transforms to do normal modes transformations.
+
+Functions:
+   mk_nm_matrix: Makes a matrix to transform between the normal mode and bead
+      representations.
+   mk_rs_matrix: Makes a matrix to transform between one number of beads and
+      another. Higher normal modes in the case of an expansion are set to zero.
+"""
+
+__all__ = ['nm_trans', 'nm_rescale', 'nm_fft']
+
+import numpy as np
+from ipi.utils.messages import verbosity, info
+
+def mk_nm_matrix(nbeads):
+   """Gets the matrix that transforms from the bead representation
+   to the normal mode representation.
+
+   If we return from this function a matrix C, then we transform between the
+   bead and normal mode representation using q_nm = C . q_b, q_b = C.T . q_nm
+
+   Args:
+      nbeads: The number of beads.
+   """
+
+   b2nm = np.zeros((nbeads,nbeads))
+   b2nm[0,:] = np.sqrt(1.0)
+   for j in range(nbeads):
+      for i in range(1, nbeads/2+1):
+         b2nm[i,j] = np.sqrt(2.0)*np.cos(2*np.pi*j*i/float(nbeads))
+      for i in range(nbeads/2+1, nbeads):
+         b2nm[i,j] = np.sqrt(2.0)*np.sin(2*np.pi*j*i/float(nbeads))
+   if (nbeads%2) == 0:
+      b2nm[nbeads/2,0:nbeads:2] = 1.0
+      b2nm[nbeads/2,1:nbeads:2] = -1.0
+   return b2nm/np.sqrt(nbeads)
+
+def mk_rs_matrix(nb1, nb2):
+   """Gets the matrix that transforms a path with nb1 beads into one with
+   nb2 beads.
+
+   If we return from this function a matrix T, then we transform between the
+   system with nb1 bead and the system of nb2 beads using q_2 = T . q_1
+
+   Args:
+      nb1: The initial number of beads.
+      nb2: The final number of beads.
+   """
+
+   if (nb1 == nb2):
+      return np.identity(nb1,float)
+   elif (nb1 > nb2):
+      b1_nm = mk_nm_matrix(nb1)
+      nm_b2 = mk_nm_matrix(nb2).T
+
+      #builds the "reduction" matrix that picks the normal modes we want to keep
+      b1_b2 = np.zeros((nb2, nb1), float)
+      b1_b2[0,0] = 1.0
+      for i in range(1, nb2/2+1):
+         b1_b2[i,i] = 1.0
+         b1_b2[nb2-i, nb1-i] = 1.0
+      if (nb2 % 2 == 0):
+         #if we are contracting down to an even number of beads, then we have to
+         #pick just one of the last degenerate modes to match onto the single
+         #stiffest mode in the new path
+         b1_b2[nb2/2, nb1-nb2/2] = 0.0
+
+      rs_b1_b2 = np.dot(nm_b2, np.dot(b1_b2, b1_nm))
+      return rs_b1_b2*np.sqrt(float(nb2)/float(nb1))
+   else:
+      return mk_rs_matrix(nb2, nb1).T*(float(nb2)/float(nb1))
+
+
+class nm_trans:
+   """Helper class to perform beads <--> normal modes transformation.
+
+   Attributes:
+      _b2nm: The matrix to transform between the bead and normal mode
+         representations.
+      _nm2b: The matrix to transform between the normal mode and bead
+         representations.
+   """
+
+   def __init__(self, nbeads):
+      """Initializes nm_trans.
+
+      Args:
+         nbeads: The number of beads.
+      """
+
+      self._b2nm = mk_nm_matrix(nbeads)
+      self._nm2b = self._b2nm.T
+
+   def b2nm(self, q):
+      """Transforms a matrix to the normal mode representation.
+
+      Args:
+         q: A matrix with nbeads rows, in the bead representation.
+      """
+
+      return np.dot(self._b2nm,q)
+
+   def nm2b(self, q):
+      """Transforms a matrix to the bead representation.
+
+      Args:
+         q: A matrix with nbeads rows, in the normal mode representation.
+      """
+
+      return np.dot(self._nm2b,q)
+
+
+class nm_rescale:
+   """Helper class to rescale a ring polymer between different number of beads.
+
+   Attributes:
+      _b1tob2: The matrix to transform between a ring polymer with 'nbeads1'
+         beads and another with 'nbeads2' beads.
+      _b2tob1: The matrix to transform between a ring polymer with 'nbeads2'
+         beads and another with 'nbeads1' beads.
+   """
+
+   def __init__(self, nbeads1, nbeads2):
+      """Initializes nm_rescale.
+
+      Args:
+         nbeads1: The initial number of beads.
+         nbeads2: The rescaled number of beads.
+      """
+
+      self._b1tob2 = mk_rs_matrix(nbeads1,nbeads2)
+      self._b2tob1 = self._b1tob2.T*(float(nbeads1)/float(nbeads2))
+
+   def b1tob2(self, q):
+      """Transforms a matrix from one value of beads to another.
+
+      Args:
+         q: A matrix with nbeads1 rows, in the bead representation.
+      """
+
+      return np.dot(self._b1tob2,q)
+
+   def b2tob1(self, q):
+      """Transforms a matrix from one value of beads to another.
+
+      Args:
+         q: A matrix with nbeads2 rows, in the bead representation.
+      """
+
+      return np.dot(self._b2tob1,q)
+
+
+
+class nm_fft:
+   """Helper class to perform beads <--> normal modes transformation
+      using Fast Fourier transforms.
+
+   Attributes:
+      fft: The fast-Fourier transform function to transform between the
+         bead and normal mode representations.
+      ifft: The inverse fast-Fourier transform function to transform
+         between the normal mode and bead representations.
+      qdummy: A matrix to hold a copy of the bead positions to transform
+         them to the normal mode representation.
+      qnmdummy: A matrix to hold a copy of the normal modes to transform
+         them to the bead representation.
+      nbeads: The number of beads.
+      natoms: The number of atoms.
+   """
+
+   def __init__(self, nbeads, natoms):
+      """Initializes nm_trans.
+
+      Args:
+         nbeads: The number of beads.
+         natoms: The number of atoms.
+      """
+
+      self.nbeads = nbeads
+      self.natoms = natoms
+      try:
+         import pyfftw
+         info("Import of PyFFTW successful", verbosity.medium)
+         self.qdummy = pyfftw.n_byte_align_empty((nbeads, 3*natoms), 16, 'float32')
+         self.qnmdummy = pyfftw.n_byte_align_empty((nbeads//2+1, 3*natoms), 16, 'complex64')
+         self.fft = pyfftw.FFTW(self.qdummy, self.qnmdummy, axes=(0,), direction='FFTW_FORWARD')
+         self.ifft = pyfftw.FFTW(self.qnmdummy, self.qdummy, axes=(0,), direction='FFTW_BACKWARD')
+      except ImportError: #Uses standard numpy fft library if nothing better
+                          #is available
+         info("Import of PyFFTW unsuccessful, using NumPy library instead", verbosity.medium)
+         self.qdummy = np.zeros((nbeads,3*natoms), dtype='float32')
+         self.qnmdummy = np.zeros((nbeads//2+1,3*natoms), dtype='complex64')
+         def dummy_fft(self):
+            self.qnmdummy = np.fft.rfft(self.qdummy, axis=0)
+         def dummy_ifft(self):
+            self.qdummy = np.fft.irfft(self.qnmdummy, n=self.nbeads, axis=0)
+         self.fft = lambda: dummy_fft(self)
+         self.ifft = lambda: dummy_ifft(self)
+
+   def b2nm(self, q):
+      """Transforms a matrix to the normal mode representation.
+
+      Args:
+         q: A matrix with nbeads rows and 3*natoms columns,
+            in the bead representation.
+      """
+
+      if self.nbeads == 1:
+         return q
+      self.qdummy[:] = q
+      self.fft()
+      if self.nbeads == 2:
+         return self.qnmdummy.real/np.sqrt(self.nbeads)
+
+      nmodes = self.nbeads/2
+
+      self.qnmdummy /= np.sqrt(self.nbeads)
+      qnm = np.zeros(q.shape)
+      qnm[0,:] = self.qnmdummy[0,:].real
+
+      if self.nbeads % 2 == 0:
+         self.qnmdummy[1:-1,:] *= np.sqrt(2)
+         (qnm[1:nmodes,:], qnm[self.nbeads:nmodes:-1,:]) = (self.qnmdummy[1:-1,:].real, self.qnmdummy[1:-1,:].imag)
+         qnm[nmodes,:] = self.qnmdummy[nmodes,:].real
+      else:
+         self.qnmdummy[1:,:] *= np.sqrt(2)
+         (qnm[1:nmodes+1,:], qnm[self.nbeads:nmodes:-1,:]) = (self.qnmdummy[1:,:].real, self.qnmdummy[1:,:].imag)
+
+      return qnm
+
+   def nm2b(self, qnm):
+      """Transforms a matrix to the bead representation.
+
+      Args:
+         qnm: A matrix with nbeads rows and 3*natoms columns,
+            in the normal mode representation.
+      """
+
+      if self.nbeads == 1:
+         return qnm
+      if self.nbeads == 2:
+         self.qnmdummy[:] = qnm
+         self.ifft()
+         return self.qdummy*np.sqrt(self.nbeads)
+
+      nmodes = self.nbeads/2
+      odd = self.nbeads - 2*nmodes  # 0 if even, 1 if odd
+
+      qnm_complex = np.zeros((nmodes+1, len(qnm[0,:])), complex)
+      qnm_complex[0,:] = qnm[0,:]
+      if not odd:
+         (qnm_complex[1:-1,:].real, qnm_complex[1:-1,:].imag) = (qnm[1:nmodes,:], qnm[self.nbeads:nmodes:-1,:])
+         qnm_complex[1:-1,:] /= np.sqrt(2)
+         qnm_complex[nmodes,:] = qnm[nmodes,:]
+      else:
+         (qnm_complex[1:,:].real, qnm_complex[1:,:].imag) = (qnm[1:nmodes+1,:], qnm[self.nbeads:nmodes:-1,:])
+         qnm_complex[1:,:] /= np.sqrt(2)
+
+      self.qnmdummy[:] = qnm_complex
+      self.ifft()
+      return self.qdummy*np.sqrt(self.nbeads)
diff --git a/tools/i-pi/ipi/utils/prng.py b/tools/i-pi/ipi/utils/prng.py
new file mode 100644
index 0000000000000000000000000000000000000000..c6626828a9496b083cd099a1516b3d0dc1c4bf08
--- /dev/null
+++ b/tools/i-pi/ipi/utils/prng.py
@@ -0,0 +1,129 @@
+"""Contains the classes used to generate pseudo-random numbers.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Allows the user to specify a seed for the random number generator.
+These are used in initialising the velocities and in stochastic thermostats.
+The state of the random number generator is kept track of, so that the if the
+simulation is restarted from a checkpoint, we will see the same dynamics as if 
+it had not been stopped.
+
+Classes:
+   Random: An interface between the numpy.random module and the user.
+"""
+
+__all__ = ['Random']
+
+import numpy as np
+import math
+
+class Random(object):
+   """Class to interface with the standard pseudo-random number generator.
+
+   Initialises the standard numpy pseudo-random number generator from a seed
+   at the beginning of the simulation, and keeps track of the state so that
+   it can be output to the checkpoint files throughout the simulation.
+
+   Attributes:
+      rng: The random number generator to be used.
+      seed: The seed number to start the generator.
+      state: A tuple of five objects giving the current state of the random
+         number generator. The first is the type of random number generator, 
+         here 'MT19937', the second is an array of 624 integers, the third
+         is the current position in the array that is being read from, the 
+         fourth gives whether it has a gaussian random number stored, and 
+         the fifth is this stored Gaussian random number, or else the last
+         Gaussian random number returned.
+   """
+
+   def __init__(self, seed=12345, state=None):
+      """Initialises Random.
+
+      Args:
+         seed: An optional seed giving an integer to initialise the state with.
+         state: An optional state tuple to initialise the state with.
+      """
+
+      self.rng = np.random.mtrand.RandomState(seed=seed)
+      self.seed = seed
+      if state is None:   
+         self.rng.seed(seed)        
+      else:
+         self.state = state
+
+   def get_state(self):
+      """Interface to the standard get_state() function."""
+
+      return self.rng.get_state()
+
+   def set_state(self, value):
+      """Interface to the standard set_state() function.
+
+      Should only be used with states generated from another similar random
+      number generator, such as one from a previous run.
+      """
+
+      return self.rng.set_state(value)
+
+   state=property(get_state, set_state)
+
+   @property
+   def u(self):
+      """Interface to the standard random_sample() function.
+
+      Returns:
+         A pseudo-random number from a uniform distribution from 0-1.
+      """
+
+      return self.rng.random_sample()
+
+   @property
+   def g(self):
+      """Interface to the standard standard_normal() function.
+
+      Returns:
+         A pseudo-random number from a normal Gaussian distribution.
+      """
+
+      return self.rng.standard_normal()
+   
+   def gamma(self, k, theta=1.0):
+      """Interface to the standard gamma() function.
+
+      Args:
+         k: Shape parameter for the gamma distribution.
+         theta: Mean of the distribution.
+
+      Returns:
+         A random number from a gamma distribution with a shape k and a 
+         mean value theta.
+      """
+
+      return self.rng.gamma(k,theta)
+
+   def gvec(self, shape):
+      """Interface to the standard_normal array function.
+
+      Args:
+         shape: The shape of the array to be returned.
+
+      Returns:
+         An array with the required shape where each element is taken from
+         a normal Gaussian distribution.
+      """
+
+      return self.rng.standard_normal(shape)
diff --git a/tools/i-pi/ipi/utils/softexit.py b/tools/i-pi/ipi/utils/softexit.py
new file mode 100644
index 0000000000000000000000000000000000000000..5d22d9de6bee2f407431aedcde7842a3b4d42fc8
--- /dev/null
+++ b/tools/i-pi/ipi/utils/softexit.py
@@ -0,0 +1,73 @@
+"""Utility functions for killing the wrapper softly.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Classes:
+   Softexit: Concise class to manage cleaning up in case of an emergency exit.
+"""
+
+import traceback, sys
+from ipi.utils.messages import verbosity, warning
+
+__all__ = ['Softexit', 'softexit']
+
+
+class Softexit(object):
+   """Class to deal with stopping a simulation half way through.
+
+   Holds the functions used to clean up a simulation that has been
+   stopped early, either because of a SIGTERM signal or because the
+   user has added an EXIT file to the directory in which it is 
+   running. This will then properly shut down the socket interface,
+   and print out a RESTART file for the appropriate time step.
+
+   Attributes:
+      flist: A list of functions used to close down the socket
+         interface.
+   """
+
+   def __init__(self):
+      """Initializes SoftExit."""
+
+      self.flist = []
+
+   def register(self, func):
+      """Adds another function to flist.
+
+      Args:
+         func: The function to be added to flist.
+      """
+
+      self.flist.append(func)
+
+   def trigger(self, message=""):
+      """Halts the simulation.
+
+      Prints out a warning message, then runs all the exit functions in flist
+      before terminating the simulation.
+
+      Args:
+         message: The message to output to standard output.
+      """
+
+      if message != "":
+         warning("Soft exit has been requested with message: '" + message + "'. Cleaning up.", verbosity.low)
+      for f in self.flist:
+         f()
+      sys.exit()
+
+softexit = Softexit()
diff --git a/tools/i-pi/ipi/utils/units.py b/tools/i-pi/ipi/utils/units.py
new file mode 100644
index 0000000000000000000000000000000000000000..93d05ea0f877579a3a628522fb4f15d410984b56
--- /dev/null
+++ b/tools/i-pi/ipi/utils/units.py
@@ -0,0 +1,358 @@
+"""Contains fundamental constants in atomic units.
+
+Copyright (C) 2013, Joshua More and Michele Ceriotti
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http.//www.gnu.org/licenses/>.
+
+
+Classes:
+   Constants: Class whose members are fundamental constants.
+   Elements: Class which contains the mass of different elements
+   Units: Class which contains the methods needed to transform
+      between different systems of units.
+"""
+
+import re
+from ipi.utils.messages import verbosity, info
+
+__all__ = ['Constants', 'Elements', 'unit_to_internal', 'unit_to_user']
+
+
+class Constants:
+   """Class whose members are fundamental constants.
+
+   Attributes:
+      kb: Boltzmann constant.
+      hbar: Reduced Planck's constant.
+      amu: Atomic mass unit.
+   """
+
+   kb = 1.0
+   hbar = 1.0
+   amu = 1822.8885
+
+
+class Elements(dict):
+   """Class which contains the mass of different elements.
+
+   Attributes:
+      mass_list: A dictionary containing the masses of different elements.
+         Has the form {"label": Mass in a.m.u.}. Note that the generic "X"
+         label is assumed to be an electron.
+   """
+
+   mass_list={
+      "X"   :    1.0000/Constants.amu,
+      "H"   :   1.00794,
+      "D"   :    2.0141,
+      "Z"   :  1.382943, #an interpolated H-D atom, based on y=1/sqrt(m) scaling
+      "H2"  :    2.0160,
+      "He"  :  4.002602,
+      "Li"  :    6.9410,
+      "Be"  :  9.012182,
+      "B"   :    10.811,
+      "C"   :   12.0107,
+      "N"   :  14.00674,
+      "O"   :   15.9994,
+      "F"   : 18.998403,
+      "Ne"  :   20.1797,
+      "Na"  : 22.989770,
+      "Mg"  :   24.3050,
+      "Al"  : 26.981538,
+      "Si"  :   28.0855,
+      "P"   : 30.973761,
+      "S"   :    32.066,
+      "Cl"  :   35.4527,
+      "Ar"  :   39.9480,
+      "K"   :   39.0983,
+      "Ca"  :    40.078,
+      "Sc"  : 44.955910,
+      "Ti"  :    47.867,
+      "V"   :   50.9415,
+      "Cr"  :   51.9961,
+      "Mn"  : 54.938049,
+      "Fe"  :    55.845,
+      "Co"  : 58.933200,
+      "Ni"  :   58.6934,
+      "Cu"  :    63.546,
+      "Zn"  :     65.39,
+      "Ga"  :    69.723,
+      "Ge"  :     72.61,
+      "As"  :  74.92160,
+      "Se"  :     78.96,
+      "Br"  :    79.904,
+      "Kr"  :     83.80,
+      "Rb"  :   85.4678,
+      "Sr"  :     87.62,
+      "Y"   :  88.90585,
+      "Zr"  :    91.224,
+      "Nb"  :  92.90638,
+      "Mo"  :     95.94,
+      "Tc"  :        98,
+      "Ru"  :    101.07,
+      "Rh"  : 102.90550,
+      "Pd"  :    106.42,
+      "Ag"  :  107.8682,
+      "Cd"  :   112.411,
+      "In"  :   114.818,
+      "Sn"  :   118.710,
+      "Sb"  :   121.760,
+      "Te"  :    127.60,
+      "I"   : 126.90447,
+      "Xe"  :    131.29,
+      "Cs"  : 132.90545,
+      "Ba"  :   137.327,
+      "La"  :  138.9055,
+      "Ce"  :   140.166,
+      "Pr"  : 140.90765,
+      "Nd"  :    144.24,
+      "Pm"  :       145,
+      "Sm"  :    150.36,
+      "Eu"  :   151.964,
+      "Gd"  :    157.25,
+      "Tb"  : 158.92534,
+      "Dy"  :    162.50,
+      "Ho"  : 164.93032,
+      "Er"  :    167.26,
+      "Tm"  : 168.93241,
+      "Yb"  :    173.04,
+      "Lu"  :   174.967,
+      "Hf"  :    178.49,
+      "Ta"  :  180.9479,
+      "W"   :    183.84,
+      "Re"  :   186.207,
+      "Os"  :    190.23,
+      "Ir"  :   192.217,
+      "Pt"  :   195.078,
+      "Au"  : 196.96655,
+      "Hg"  :    200.59,
+      "Tl"  :  204.3833,
+      "Pb"  :     207.2,
+      "Bi"  : 208.98038,
+      "Po"  :       209,
+      "At"  :       210,
+      "Rn"  :       222,
+      "Fr"  :       223,
+      "Ra"  :       226,
+      "Ac"  :       227,
+      "Th"  :  232.0381,
+      "Pa"  : 231.03588,
+      "U"   :  238.0289,
+      "Np"  :       237,
+      "Pu"  :       244,
+      "Am"  :       243,
+      "Cm"  :       247,
+      "Bk"  :       247,
+      "Cf"  :       251,
+      "Es"  :       252,
+      "Fm"  :       257,
+      "Md"  :       258,
+      "No"  :       259,
+      "Lr"  :       262,
+      "Rf"  :       267,
+      "Db"  :       268,
+      "Sg"  :       269,
+      "Bh"  :       270,
+      "Hs"  :       269,
+      "Mt"  :       278,
+      "Ds"  :       281,
+      "Rg"  :       280,
+      "Cn"  :       285,
+      "Uut" :       286,
+      "Fl"  :       289,
+      "Uup" :       288,
+      "Lv"  :       293,
+      "Uus" :       294,
+      "Uuo" :       294
+   }
+
+   @classmethod
+   def mass(cls, label):
+      """Function to access the mass_list attribute.
+
+      Note that this does not require an instance of the Elements class to be
+      created, as this is a class method. Therefore using Elements.mass(label)
+      will give the mass of the element with the atomic symbol given by label.
+
+      Args:
+         label: The atomic symbol of the atom whose mass is required.
+
+      Returns:
+         A float giving the mass of the atom with atomic symbol label.
+      """
+
+      try:
+         return cls.mass_list[label]*Constants.amu
+      except KeyError:
+         info("Unknown element given, you must specify the mass", verbosity.low)
+         return -1.0
+
+# these are the conversion FROM the unit stated to internal (atomic) units
+UnitMap = {
+   "undefined": {
+      ""             : 1.00
+      },
+   "energy":   {
+      ""             : 1.00,
+      "atomic_unit"  : 1.00,
+      "electronvolt" : 0.036749326,
+      "j/mol"        : 0.00000038087989,
+      "cal/mol"      : 0.0000015946679,
+      "kelvin"       : 3.1668152e-06
+      },
+   "temperature":   {
+      ""             : 1.00,
+      "atomic_unit"  : 1.00,
+      "kelvin"       : 3.1668152e-06
+      },
+   "time":     {
+      ""             : 1.00,
+      "atomic_unit"  : 1.00,
+      "second"       : 4.1341373e+16
+      },
+   "frequency" :   {   # NB Internally, ANGULAR frequencies are used.
+      ""             : 1.00,
+      "atomic_unit"  : 1.00,
+      "inversecm"    : 4.5563353e-06,
+      "hertz*rad"    : 2.4188843e-17,
+      "hertz"        : 1.5198298e-16
+      },
+   "ms-momentum" :   {   # TODO fill up units here (mass-scaled momentum)
+      ""             : 1.00,
+      "atomic_unit"  : 1.00
+      },
+   "length" :     {
+      ""             : 1.00,
+      "atomic_unit"  : 1.00,
+      "angstrom"     : 1.8897261,
+      "meter"        : 1.8897261e+10
+      },
+   "volume" :     {
+      ""             : 1.00,
+      "atomic_unit"  : 1.00,
+      "angstrom3"    : 6.748334231,
+      },
+   "velocity":    {
+      ""            : 1.00,
+      "atomic_unit" : 1.00,
+      "m/s"         : 4.5710289e-7
+      },
+   "momentum":    {
+      ""             : 1.00,
+      "atomic_unit"  : 1.00
+      },
+   "mass":        {
+      ""             : 1.00,
+      "atomic_unit"  : 1.00,
+      "dalton"       : 1.00*Constants.amu,
+      "electronmass" : 1.00
+      },
+   "pressure" :     {
+      ""             : 1.00,
+      "atomic_unit"  : 1.00,
+      "bar"          : 3.398827377e-9,
+      "atmosphere"   : 3.44386184e-9,
+      "pascal"       : 3.398827377e-14
+      },
+   "density" : {
+      ""             : 1.00,
+      "atomic_unit"  : 1.00,
+      "g/cm3"        : 162.67263
+      },
+    "force" : {
+      ""             : 1.00,
+      "atomic_unit"  : 1.00,
+      "newton"       : 12137805
+      }
+
+}
+
+# a list of magnitude prefixes
+UnitPrefix = {
+   "" : 1.0,
+   "yotta" : 1e24, "zetta" : 1e21, "exa" : 1e18, "peta" : 1e15,
+   "tera" : 1e12, "giga" : 1e9, "mega" : 1e6, "kilo" : 1e3,
+   "milli" : 1e-3, "micro" : 1e-6, "nano" : 1e-9, "pico" : 1e-12,
+   "femto" : 1e-15, "atto" : 1e-18, "zepto" : 1e-21, "yocto" : 1e-24
+}
+
+# builds a RE to match prefix and split out the base unit
+UnitPrefixRE = ""
+for key in UnitPrefix:
+   UnitPrefixRE = UnitPrefixRE + key + "|"
+UnitPrefixRE = " *(" + UnitPrefixRE[1:] + ")(.*) *"
+UnitPrefixRE = re.compile(UnitPrefixRE)
+
+########################################################################
+#  Atomic units are used EVERYWHERE internally. In order to quickly    #
+#  interface with any "outside" unit, we set up a simple conversion    #
+#  library.                                                            #
+########################################################################
+
+def unit_to_internal(family, unit, number):
+   """Converts a number of given dimensions and units into internal units.
+
+   Args:
+      family: The dimensionality of the number.
+      unit: The units 'number' is originally in.
+      number: The value of the parameter in the units 'unit'.
+
+   Returns:
+      The number in internal units.
+
+   Raises:
+      ValueError: Raised if the user specified units aren't given in the
+         UnitMap dictionary.
+      IndexError: Raised if the programmer specified dimensionality for the
+         parameter isn't in UnitMap. Shouldn't happen, for obvious reasons.
+      TypeError: Raised if the prefix is correct, but the base unit is not, in
+         the user specified unit string.
+   """
+
+   if not (family == "number" or family in UnitMap):
+      raise IndexError(family + " is an undefined units kind.")
+   if family == "number":
+      return number
+
+
+   if unit == "":
+      prefix = ""
+      base = ""
+   else:
+      m = UnitPrefixRE.match(unit);
+      if m is None:
+         raise ValueError("Unit " + unit + " is not structured with a prefix+base syntax.")
+      prefix = m.group(1)
+      base = m.group(2)
+
+   if not prefix in UnitPrefix:
+      raise TypeError(prefix + " is not a valid unit prefix.")
+   if not base in UnitMap[family]:
+      raise TypeError(base + " is an undefined unit for kind " + family + ".")
+
+   return number*UnitMap[family][base]*UnitPrefix[prefix]
+
+def unit_to_user(family, unit, number):
+   """Converts a number of given dimensions from internal to user units.
+
+   Args:
+      family: The dimensionality of the number.
+      unit: The units 'number' should be changed to.
+      number: The value of the parameter in internal units.
+
+   Returns:
+      The number in the user specified units
+   """
+
+   return number/unit_to_internal(family, unit, 1.0)
diff --git a/tools/i-pi/licenses/license_GPL.txt b/tools/i-pi/licenses/license_GPL.txt
new file mode 100644
index 0000000000000000000000000000000000000000..10926e87f113fb026c366866d6fa466061562870
--- /dev/null
+++ b/tools/i-pi/licenses/license_GPL.txt
@@ -0,0 +1,675 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program 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 General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+
diff --git a/tools/i-pi/licenses/license_MIT.txt b/tools/i-pi/licenses/license_MIT.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3a85b00ea712eda2ef237d599d7cd5219d1720ee
--- /dev/null
+++ b/tools/i-pi/licenses/license_MIT.txt
@@ -0,0 +1,21 @@
+                        MIT license
+                 Modern Style with sublicense
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/i-pi/manual.pdf b/tools/i-pi/manual.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..b4a239d43fac14f4449df7e63c73ccaf60027b52
Binary files /dev/null and b/tools/i-pi/manual.pdf differ