# Import the wrap function.
from NL.CommonConcepts.Configurations.Utilities import wrap

# Set up lattice and scale the lattice constants with 1.1
vector_a = [15.345*1.1, 0.0, 0.0]*Angstrom
vector_b = [0.0, 15.345*1.1, 0.0]*Angstrom
vector_c = [0.0, 0.0, 15.345*1.1]*Angstrom
lattice = UnitCell(vector_a, vector_b, vector_c)

# Define elements
elements = [Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium,
            Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium,
            Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium,
            Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Oxygen,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Hafnium, Hafnium, Hafnium,
            Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium,
            Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium,
            Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium,
            Hafnium, Hafnium, Hafnium, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium,
            Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium,
            Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium,
            Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Hafnium, Hafnium,
            Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium,
            Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium,
            Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium, Hafnium,
            Hafnium, Hafnium, Hafnium, Hafnium, Oxygen, Oxygen, Oxygen,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen,
            Oxygen, Oxygen, Oxygen]

# Define coordinates
fractional_coordinates = [[ 0.            ,  0.            ,  0.            ],
                          [ 0.            ,  0.            ,  0.333333333333],
                          [ 0.            ,  0.            ,  0.666666666667],
                          [ 0.            ,  0.333333333333,  0.            ],
                          [ 0.            ,  0.333333333333,  0.333333333333],
                          [ 0.            ,  0.333333333333,  0.666666666667],
                          [ 0.            ,  0.666666666667,  0.            ],
                          [ 0.            ,  0.666666666667,  0.333333333333],
                          [ 0.            ,  0.666666666667,  0.666666666667],
                          [ 0.333333333333,  0.            ,  0.            ],
                          [ 0.333333333333,  0.            ,  0.333333333333],
                          [ 0.333333333333,  0.            ,  0.666666666667],
                          [ 0.333333333333,  0.333333333333,  0.            ],
                          [ 0.333333333333,  0.333333333333,  0.333333333333],
                          [ 0.333333333333,  0.333333333333,  0.666666666667],
                          [ 0.333333333333,  0.666666666667,  0.            ],
                          [ 0.333333333333,  0.666666666667,  0.333333333333],
                          [ 0.333333333333,  0.666666666667,  0.666666666667],
                          [ 0.666666666667,  0.            ,  0.            ],
                          [ 0.666666666667,  0.            ,  0.333333333333],
                          [ 0.666666666667,  0.            ,  0.666666666667],
                          [ 0.666666666667,  0.333333333333,  0.            ],
                          [ 0.666666666667,  0.333333333333,  0.333333333333],
                          [ 0.666666666667,  0.333333333333,  0.666666666667],
                          [ 0.666666666667,  0.666666666667,  0.            ],
                          [ 0.666666666667,  0.666666666667,  0.333333333333],
                          [ 0.666666666667,  0.666666666667,  0.666666666667],
                          [ 0.083333333333,  0.083333333333,  0.083333333333],
                          [ 0.083333333333,  0.083333333333,  0.416666666667],
                          [ 0.083333333333,  0.083333333333,  0.75          ],
                          [ 0.083333333333,  0.416666666667,  0.083333333333],
                          [ 0.083333333333,  0.416666666667,  0.416666666667],
                          [ 0.083333333333,  0.416666666667,  0.75          ],
                          [ 0.083333333333,  0.75          ,  0.083333333333],
                          [ 0.083333333333,  0.75          ,  0.416666666667],
                          [ 0.083333333333,  0.75          ,  0.75          ],
                          [ 0.416666666667,  0.083333333333,  0.083333333333],
                          [ 0.416666666667,  0.083333333333,  0.416666666667],
                          [ 0.416666666667,  0.083333333333,  0.75          ],
                          [ 0.416666666667,  0.416666666667,  0.083333333333],
                          [ 0.416666666667,  0.416666666667,  0.416666666667],
                          [ 0.416666666667,  0.416666666667,  0.75          ],
                          [ 0.416666666667,  0.75          ,  0.083333333333],
                          [ 0.416666666667,  0.75          ,  0.416666666667],
                          [ 0.416666666667,  0.75          ,  0.75          ],
                          [ 0.75          ,  0.083333333333,  0.083333333333],
                          [ 0.75          ,  0.083333333333,  0.416666666667],
                          [ 0.75          ,  0.083333333333,  0.75          ],
                          [ 0.75          ,  0.416666666667,  0.083333333333],
                          [ 0.75          ,  0.416666666667,  0.416666666667],
                          [ 0.75          ,  0.416666666667,  0.75          ],
                          [ 0.75          ,  0.75          ,  0.083333333333],
                          [ 0.75          ,  0.75          ,  0.416666666667],
                          [ 0.75          ,  0.75          ,  0.75          ],
                          [ 0.25          ,  0.25          ,  0.25          ],
                          [ 0.25          ,  0.25          ,  0.583333333333],
                          [ 0.25          ,  0.25          ,  0.916666666667],
                          [ 0.25          ,  0.583333333333,  0.25          ],
                          [ 0.25          ,  0.583333333333,  0.583333333333],
                          [ 0.25          ,  0.583333333333,  0.916666666667],
                          [ 0.25          ,  0.916666666667,  0.25          ],
                          [ 0.25          ,  0.916666666667,  0.583333333333],
                          [ 0.25          ,  0.916666666667,  0.916666666667],
                          [ 0.583333333333,  0.25          ,  0.25          ],
                          [ 0.583333333333,  0.25          ,  0.583333333333],
                          [ 0.583333333333,  0.25          ,  0.916666666667],
                          [ 0.583333333333,  0.583333333333,  0.25          ],
                          [ 0.583333333333,  0.583333333333,  0.583333333333],
                          [ 0.583333333333,  0.583333333333,  0.916666666667],
                          [ 0.583333333333,  0.916666666667,  0.25          ],
                          [ 0.583333333333,  0.916666666667,  0.583333333333],
                          [ 0.583333333333,  0.916666666667,  0.916666666667],
                          [ 0.916666666667,  0.25          ,  0.25          ],
                          [ 0.916666666667,  0.25          ,  0.583333333333],
                          [ 0.916666666667,  0.25          ,  0.916666666667],
                          [ 0.916666666667,  0.583333333333,  0.25          ],
                          [ 0.916666666667,  0.583333333333,  0.583333333333],
                          [ 0.916666666667,  0.583333333333,  0.916666666667],
                          [ 0.916666666667,  0.916666666667,  0.25          ],
                          [ 0.916666666667,  0.916666666667,  0.583333333333],
                          [ 0.916666666667,  0.916666666667,  0.916666666667],
                          [ 0.166666666667,  0.166666666667,  0.            ],
                          [ 0.166666666667,  0.166666666667,  0.333333333333],
                          [ 0.166666666667,  0.166666666667,  0.666666666667],
                          [ 0.166666666667,  0.5           ,  0.            ],
                          [ 0.166666666667,  0.5           ,  0.333333333333],
                          [ 0.166666666667,  0.5           ,  0.666666666667],
                          [ 0.166666666667,  0.833333333333,  0.            ],
                          [ 0.166666666667,  0.833333333333,  0.333333333333],
                          [ 0.166666666667,  0.833333333333,  0.666666666667],
                          [ 0.5           ,  0.166666666667,  0.            ],
                          [ 0.5           ,  0.166666666667,  0.333333333333],
                          [ 0.5           ,  0.166666666667,  0.666666666667],
                          [ 0.5           ,  0.5           ,  0.            ],
                          [ 0.5           ,  0.5           ,  0.333333333333],
                          [ 0.5           ,  0.5           ,  0.666666666667],
                          [ 0.5           ,  0.833333333333,  0.            ],
                          [ 0.5           ,  0.833333333333,  0.333333333333],
                          [ 0.5           ,  0.833333333333,  0.666666666667],
                          [ 0.833333333333,  0.166666666667,  0.            ],
                          [ 0.833333333333,  0.166666666667,  0.333333333333],
                          [ 0.833333333333,  0.166666666667,  0.666666666667],
                          [ 0.833333333333,  0.5           ,  0.            ],
                          [ 0.833333333333,  0.5           ,  0.333333333333],
                          [ 0.833333333333,  0.5           ,  0.666666666667],
                          [ 0.833333333333,  0.833333333333,  0.            ],
                          [ 0.833333333333,  0.833333333333,  0.333333333333],
                          [ 0.833333333333,  0.833333333333,  0.666666666667],
                          [ 0.25          ,  0.25          ,  0.083333333333],
                          [ 0.25          ,  0.25          ,  0.416666666667],
                          [ 0.25          ,  0.25          ,  0.75          ],
                          [ 0.25          ,  0.583333333333,  0.083333333333],
                          [ 0.25          ,  0.583333333333,  0.416666666667],
                          [ 0.25          ,  0.583333333333,  0.75          ],
                          [ 0.25          ,  0.916666666667,  0.083333333333],
                          [ 0.25          ,  0.916666666667,  0.416666666667],
                          [ 0.25          ,  0.916666666667,  0.75          ],
                          [ 0.583333333333,  0.25          ,  0.083333333333],
                          [ 0.583333333333,  0.25          ,  0.416666666667],
                          [ 0.583333333333,  0.25          ,  0.75          ],
                          [ 0.583333333333,  0.583333333333,  0.083333333333],
                          [ 0.583333333333,  0.583333333333,  0.416666666667],
                          [ 0.583333333333,  0.583333333333,  0.75          ],
                          [ 0.583333333333,  0.916666666667,  0.083333333333],
                          [ 0.583333333333,  0.916666666667,  0.416666666667],
                          [ 0.583333333333,  0.916666666667,  0.75          ],
                          [ 0.916666666667,  0.25          ,  0.083333333333],
                          [ 0.916666666667,  0.25          ,  0.416666666667],
                          [ 0.916666666667,  0.25          ,  0.75          ],
                          [ 0.916666666667,  0.583333333333,  0.083333333333],
                          [ 0.916666666667,  0.583333333333,  0.416666666667],
                          [ 0.916666666667,  0.583333333333,  0.75          ],
                          [ 0.916666666667,  0.916666666667,  0.083333333333],
                          [ 0.916666666667,  0.916666666667,  0.416666666667],
                          [ 0.916666666667,  0.916666666667,  0.75          ],
                          [ 0.083333333333,  0.083333333333,  0.25          ],
                          [ 0.083333333333,  0.083333333333,  0.583333333333],
                          [ 0.083333333333,  0.083333333333,  0.916666666667],
                          [ 0.083333333333,  0.416666666667,  0.25          ],
                          [ 0.083333333333,  0.416666666667,  0.583333333333],
                          [ 0.083333333333,  0.416666666667,  0.916666666667],
                          [ 0.083333333333,  0.75          ,  0.25          ],
                          [ 0.083333333333,  0.75          ,  0.583333333333],
                          [ 0.083333333333,  0.75          ,  0.916666666667],
                          [ 0.416666666667,  0.083333333333,  0.25          ],
                          [ 0.416666666667,  0.083333333333,  0.583333333333],
                          [ 0.416666666667,  0.083333333333,  0.916666666667],
                          [ 0.416666666667,  0.416666666667,  0.25          ],
                          [ 0.416666666667,  0.416666666667,  0.583333333333],
                          [ 0.416666666667,  0.416666666667,  0.916666666667],
                          [ 0.416666666667,  0.75          ,  0.25          ],
                          [ 0.416666666667,  0.75          ,  0.583333333333],
                          [ 0.416666666667,  0.75          ,  0.916666666667],
                          [ 0.75          ,  0.083333333333,  0.25          ],
                          [ 0.75          ,  0.083333333333,  0.583333333333],
                          [ 0.75          ,  0.083333333333,  0.916666666667],
                          [ 0.75          ,  0.416666666667,  0.25          ],
                          [ 0.75          ,  0.416666666667,  0.583333333333],
                          [ 0.75          ,  0.416666666667,  0.916666666667],
                          [ 0.75          ,  0.75          ,  0.25          ],
                          [ 0.75          ,  0.75          ,  0.583333333333],
                          [ 0.75          ,  0.75          ,  0.916666666667],
                          [ 0.166666666667,  0.            ,  0.166666666667],
                          [ 0.166666666667,  0.            ,  0.5           ],
                          [ 0.166666666667,  0.            ,  0.833333333333],
                          [ 0.166666666667,  0.333333333333,  0.166666666667],
                          [ 0.166666666667,  0.333333333333,  0.5           ],
                          [ 0.166666666667,  0.333333333333,  0.833333333333],
                          [ 0.166666666667,  0.666666666667,  0.166666666667],
                          [ 0.166666666667,  0.666666666667,  0.5           ],
                          [ 0.166666666667,  0.666666666667,  0.833333333333],
                          [ 0.5           ,  0.            ,  0.166666666667],
                          [ 0.5           ,  0.            ,  0.5           ],
                          [ 0.5           ,  0.            ,  0.833333333333],
                          [ 0.5           ,  0.333333333333,  0.166666666667],
                          [ 0.5           ,  0.333333333333,  0.5           ],
                          [ 0.5           ,  0.333333333333,  0.833333333333],
                          [ 0.5           ,  0.666666666667,  0.166666666667],
                          [ 0.5           ,  0.666666666667,  0.5           ],
                          [ 0.5           ,  0.666666666667,  0.833333333333],
                          [ 0.833333333333,  0.            ,  0.166666666667],
                          [ 0.833333333333,  0.            ,  0.5           ],
                          [ 0.833333333333,  0.            ,  0.833333333333],
                          [ 0.833333333333,  0.333333333333,  0.166666666667],
                          [ 0.833333333333,  0.333333333333,  0.5           ],
                          [ 0.833333333333,  0.333333333333,  0.833333333333],
                          [ 0.833333333333,  0.666666666667,  0.166666666667],
                          [ 0.833333333333,  0.666666666667,  0.5           ],
                          [ 0.833333333333,  0.666666666667,  0.833333333333],
                          [ 0.25          ,  0.083333333333,  0.25          ],
                          [ 0.25          ,  0.083333333333,  0.583333333333],
                          [ 0.25          ,  0.083333333333,  0.916666666667],
                          [ 0.25          ,  0.416666666667,  0.25          ],
                          [ 0.25          ,  0.416666666667,  0.583333333333],
                          [ 0.25          ,  0.416666666667,  0.916666666667],
                          [ 0.25          ,  0.75          ,  0.25          ],
                          [ 0.25          ,  0.75          ,  0.583333333333],
                          [ 0.25          ,  0.75          ,  0.916666666667],
                          [ 0.583333333333,  0.083333333333,  0.25          ],
                          [ 0.583333333333,  0.083333333333,  0.583333333333],
                          [ 0.583333333333,  0.083333333333,  0.916666666667],
                          [ 0.583333333333,  0.416666666667,  0.25          ],
                          [ 0.583333333333,  0.416666666667,  0.583333333333],
                          [ 0.583333333333,  0.416666666667,  0.916666666667],
                          [ 0.583333333333,  0.75          ,  0.25          ],
                          [ 0.583333333333,  0.75          ,  0.583333333333],
                          [ 0.583333333333,  0.75          ,  0.916666666667],
                          [ 0.916666666667,  0.083333333333,  0.25          ],
                          [ 0.916666666667,  0.083333333333,  0.583333333333],
                          [ 0.916666666667,  0.083333333333,  0.916666666667],
                          [ 0.916666666667,  0.416666666667,  0.25          ],
                          [ 0.916666666667,  0.416666666667,  0.583333333333],
                          [ 0.916666666667,  0.416666666667,  0.916666666667],
                          [ 0.916666666667,  0.75          ,  0.25          ],
                          [ 0.916666666667,  0.75          ,  0.583333333333],
                          [ 0.916666666667,  0.75          ,  0.916666666667],
                          [ 0.083333333333,  0.25          ,  0.083333333333],
                          [ 0.083333333333,  0.25          ,  0.416666666667],
                          [ 0.083333333333,  0.25          ,  0.75          ],
                          [ 0.083333333333,  0.583333333333,  0.083333333333],
                          [ 0.083333333333,  0.583333333333,  0.416666666667],
                          [ 0.083333333333,  0.583333333333,  0.75          ],
                          [ 0.083333333333,  0.916666666667,  0.083333333333],
                          [ 0.083333333333,  0.916666666667,  0.416666666667],
                          [ 0.083333333333,  0.916666666667,  0.75          ],
                          [ 0.416666666667,  0.25          ,  0.083333333333],
                          [ 0.416666666667,  0.25          ,  0.416666666667],
                          [ 0.416666666667,  0.25          ,  0.75          ],
                          [ 0.416666666667,  0.583333333333,  0.083333333333],
                          [ 0.416666666667,  0.583333333333,  0.416666666667],
                          [ 0.416666666667,  0.583333333333,  0.75          ],
                          [ 0.416666666667,  0.916666666667,  0.083333333333],
                          [ 0.416666666667,  0.916666666667,  0.416666666667],
                          [ 0.416666666667,  0.916666666667,  0.75          ],
                          [ 0.75          ,  0.25          ,  0.083333333333],
                          [ 0.75          ,  0.25          ,  0.416666666667],
                          [ 0.75          ,  0.25          ,  0.75          ],
                          [ 0.75          ,  0.583333333333,  0.083333333333],
                          [ 0.75          ,  0.583333333333,  0.416666666667],
                          [ 0.75          ,  0.583333333333,  0.75          ],
                          [ 0.75          ,  0.916666666667,  0.083333333333],
                          [ 0.75          ,  0.916666666667,  0.416666666667],
                          [ 0.75          ,  0.916666666667,  0.75          ],
                          [ 0.            ,  0.166666666667,  0.166666666667],
                          [ 0.            ,  0.166666666667,  0.5           ],
                          [ 0.            ,  0.166666666667,  0.833333333333],
                          [ 0.            ,  0.5           ,  0.166666666667],
                          [ 0.            ,  0.5           ,  0.5           ],
                          [ 0.            ,  0.5           ,  0.833333333333],
                          [ 0.            ,  0.833333333333,  0.166666666667],
                          [ 0.            ,  0.833333333333,  0.5           ],
                          [ 0.            ,  0.833333333333,  0.833333333333],
                          [ 0.333333333333,  0.166666666667,  0.166666666667],
                          [ 0.333333333333,  0.166666666667,  0.5           ],
                          [ 0.333333333333,  0.166666666667,  0.833333333333],
                          [ 0.333333333333,  0.5           ,  0.166666666667],
                          [ 0.333333333333,  0.5           ,  0.5           ],
                          [ 0.333333333333,  0.5           ,  0.833333333333],
                          [ 0.333333333333,  0.833333333333,  0.166666666667],
                          [ 0.333333333333,  0.833333333333,  0.5           ],
                          [ 0.333333333333,  0.833333333333,  0.833333333333],
                          [ 0.666666666667,  0.166666666667,  0.166666666667],
                          [ 0.666666666667,  0.166666666667,  0.5           ],
                          [ 0.666666666667,  0.166666666667,  0.833333333333],
                          [ 0.666666666667,  0.5           ,  0.166666666667],
                          [ 0.666666666667,  0.5           ,  0.5           ],
                          [ 0.666666666667,  0.5           ,  0.833333333333],
                          [ 0.666666666667,  0.833333333333,  0.166666666667],
                          [ 0.666666666667,  0.833333333333,  0.5           ],
                          [ 0.666666666667,  0.833333333333,  0.833333333333],
                          [ 0.083333333333,  0.25          ,  0.25          ],
                          [ 0.083333333333,  0.25          ,  0.583333333333],
                          [ 0.083333333333,  0.25          ,  0.916666666667],
                          [ 0.083333333333,  0.583333333333,  0.25          ],
                          [ 0.083333333333,  0.583333333333,  0.583333333333],
                          [ 0.083333333333,  0.583333333333,  0.916666666667],
                          [ 0.083333333333,  0.916666666667,  0.25          ],
                          [ 0.083333333333,  0.916666666667,  0.583333333333],
                          [ 0.083333333333,  0.916666666667,  0.916666666667],
                          [ 0.416666666667,  0.25          ,  0.25          ],
                          [ 0.416666666667,  0.25          ,  0.583333333333],
                          [ 0.416666666667,  0.25          ,  0.916666666667],
                          [ 0.416666666667,  0.583333333333,  0.25          ],
                          [ 0.416666666667,  0.583333333333,  0.583333333333],
                          [ 0.416666666667,  0.583333333333,  0.916666666667],
                          [ 0.416666666667,  0.916666666667,  0.25          ],
                          [ 0.416666666667,  0.916666666667,  0.583333333333],
                          [ 0.416666666667,  0.916666666667,  0.916666666667],
                          [ 0.75          ,  0.25          ,  0.25          ],
                          [ 0.75          ,  0.25          ,  0.583333333333],
                          [ 0.75          ,  0.25          ,  0.916666666667],
                          [ 0.75          ,  0.583333333333,  0.25          ],
                          [ 0.75          ,  0.583333333333,  0.583333333333],
                          [ 0.75          ,  0.583333333333,  0.916666666667],
                          [ 0.75          ,  0.916666666667,  0.25          ],
                          [ 0.75          ,  0.916666666667,  0.583333333333],
                          [ 0.75          ,  0.916666666667,  0.916666666667],
                          [ 0.25          ,  0.083333333333,  0.083333333333],
                          [ 0.25          ,  0.083333333333,  0.416666666667],
                          [ 0.25          ,  0.083333333333,  0.75          ],
                          [ 0.25          ,  0.416666666667,  0.083333333333],
                          [ 0.25          ,  0.416666666667,  0.416666666667],
                          [ 0.25          ,  0.416666666667,  0.75          ],
                          [ 0.25          ,  0.75          ,  0.083333333333],
                          [ 0.25          ,  0.75          ,  0.416666666667],
                          [ 0.25          ,  0.75          ,  0.75          ],
                          [ 0.583333333333,  0.083333333333,  0.083333333333],
                          [ 0.583333333333,  0.083333333333,  0.416666666667],
                          [ 0.583333333333,  0.083333333333,  0.75          ],
                          [ 0.583333333333,  0.416666666667,  0.083333333333],
                          [ 0.583333333333,  0.416666666667,  0.416666666667],
                          [ 0.583333333333,  0.416666666667,  0.75          ],
                          [ 0.583333333333,  0.75          ,  0.083333333333],
                          [ 0.583333333333,  0.75          ,  0.416666666667],
                          [ 0.583333333333,  0.75          ,  0.75          ],
                          [ 0.916666666667,  0.083333333333,  0.083333333333],
                          [ 0.916666666667,  0.083333333333,  0.416666666667],
                          [ 0.916666666667,  0.083333333333,  0.75          ],
                          [ 0.916666666667,  0.416666666667,  0.083333333333],
                          [ 0.916666666667,  0.416666666667,  0.416666666667],
                          [ 0.916666666667,  0.416666666667,  0.75          ],
                          [ 0.916666666667,  0.75          ,  0.083333333333],
                          [ 0.916666666667,  0.75          ,  0.416666666667],
                          [ 0.916666666667,  0.75          ,  0.75          ]]

# Set up configuration
bulk_configuration = BulkConfiguration(
    bravais_lattice=lattice,
    elements=elements,
    fractional_coordinates=fractional_coordinates
    )

# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------

potentialSet = Wang_HfOZr_2012()
calculator = TremoloXCalculator(parameters=potentialSet)

bulk_configuration.setCalculator(calculator)
bulk_configuration.update()

# -------------------------------------------------------------
# Molecular Dynamics
# -------------------------------------------------------------

initial_velocity = MaxwellBoltzmannDistribution(
    temperature=5000.0*Kelvin,
    remove_center_of_mass_momentum=True
)

method = NVTNoseHoover(
    time_step=1*femtoSecond,
    reservoir_temperature=5000*Kelvin,
    thermostat_timescale=100*femtoSecond,
    heating_rate=-13.3333*Kelvin/picoSecond,
    chain_length=3,
    initial_velocity=initial_velocity
)

md_trajectory = MolecularDynamics(
    bulk_configuration,
    constraints=[],
    trajectory_filename='HfOx_low_density_cool_traj.hdf5',
    steps=150000,
    log_interval=5000,
    method=method
)

bulk_configuration = md_trajectory.lastImage()

# Wrap the coordinates back inside the cell.
wrap(bulk_configuration)

# Now adjust the density to the target density of 7.97 g/cm**3

# Get the volume and the lattice vectors of the cell.
V = bulk_configuration.bravaisLattice().unitCellVolume()
lattice_vectors = bulk_configuration.bravaisLattice().primitiveVectors()

# Get the coordinates and the elements.
fractional_coordinates = bulk_configuration.fractionalCoordinates()
elements = bulk_configuration.elements()

# The total and species-resolved number of atoms.
N = len(elements)
N_Hf = len(numpy.where(numpy.array(elements)==Hafnium)[0])
N_O  = len(numpy.where(numpy.array(elements)==Oxygen)[0])

# Calculate the current density
density = (N_Hf*Hafnium.atomicMass() + N_O*Oxygen.atomicMass())/V

# Get the density in g/cm**3
density = density.inUnitsOf(kiloGram/Meter**3)/1000.0
target_density = 7.97

# Calculate the scaling factor for the lattice vectors.
scale_factor = (density/target_density)**(1.0/3)

# Scale the lattice vectors.
lattice_vectors = lattice_vectors*scale_factor

# Define a new cell.
new_lattice = UnitCell(lattice_vectors[0], lattice_vectors[1], lattice_vectors[2])

# Set up configuration
bulk_configuration = BulkConfiguration(
    bravais_lattice=new_lattice,
    elements=elements,
    fractional_coordinates=fractional_coordinates
    )

# The calculator is still defined and can readily be attached.
bulk_configuration.setCalculator(calculator)

# -------------------------------------------------------------
# Molecular Dynamics
# -------------------------------------------------------------

initial_velocity = MaxwellBoltzmannDistribution(
    temperature=3000.0*Kelvin,
    remove_center_of_mass_momentum=True
)

method = NVTNoseHoover(
    time_step=1*femtoSecond,
    reservoir_temperature=3000*Kelvin,
    thermostat_timescale=100*femtoSecond,
    heating_rate=-9*Kelvin/picoSecond,
    chain_length=3,
    initial_velocity=initial_velocity
)

md_trajectory = MolecularDynamics(
    bulk_configuration,
    constraints=[],
    trajectory_filename='HfOx_cool_to300K_traj.hdf5',
    steps=300000,
    log_interval=5000,
    method=method
)

bulk_configuration = md_trajectory.lastImage()
