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

# Set up lattice
lattice = SimpleTetragonal(18.372*1.1*Angstrom, 17.754*1.1*Angstrom)

# Define elements
elements = [Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium,
            Titanium, Titanium, Titanium, Titanium, Titanium, Titanium, 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, 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, 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, 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, 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, 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, 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, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen, Oxygen]

# Define coordinates
fractional_coordinates = [[ 0.            ,  0.            ,  0.            ],
                          [ 0.            ,  0.            ,  0.333333333333],
                          [ 0.            ,  0.            ,  0.666666666667],
                          [ 0.            ,  0.5           ,  0.            ],
                          [ 0.            ,  0.5           ,  0.333333333333],
                          [ 0.            ,  0.5           ,  0.666666666667],
                          [ 0.5           ,  0.            ,  0.            ],
                          [ 0.5           ,  0.            ,  0.333333333333],
                          [ 0.5           ,  0.            ,  0.666666666667],
                          [ 0.5           ,  0.5           ,  0.            ],
                          [ 0.5           ,  0.5           ,  0.333333333333],
                          [ 0.5           ,  0.5           ,  0.666666666667],
                          [ 0.            ,  0.            ,  0.166666666667],
                          [ 0.            ,  0.            ,  0.5           ],
                          [ 0.            ,  0.            ,  0.833333333333],
                          [ 0.            ,  0.5           ,  0.166666666667],
                          [ 0.            ,  0.5           ,  0.5           ],
                          [ 0.            ,  0.5           ,  0.833333333333],
                          [ 0.5           ,  0.            ,  0.166666666667],
                          [ 0.5           ,  0.            ,  0.5           ],
                          [ 0.5           ,  0.            ,  0.833333333333],
                          [ 0.5           ,  0.5           ,  0.166666666667],
                          [ 0.5           ,  0.5           ,  0.5           ],
                          [ 0.5           ,  0.5           ,  0.833333333333],
                          [ 0.            ,  0.25          ,  0.            ],
                          [ 0.            ,  0.25          ,  0.333333333333],
                          [ 0.            ,  0.25          ,  0.666666666667],
                          [ 0.            ,  0.75          ,  0.            ],
                          [ 0.            ,  0.75          ,  0.333333333333],
                          [ 0.            ,  0.75          ,  0.666666666667],
                          [ 0.5           ,  0.25          ,  0.            ],
                          [ 0.5           ,  0.25          ,  0.333333333333],
                          [ 0.5           ,  0.25          ,  0.666666666667],
                          [ 0.5           ,  0.75          ,  0.            ],
                          [ 0.5           ,  0.75          ,  0.333333333333],
                          [ 0.5           ,  0.75          ,  0.666666666667],
                          [ 0.            ,  0.25          ,  0.166666666667],
                          [ 0.            ,  0.25          ,  0.5           ],
                          [ 0.            ,  0.25          ,  0.833333333333],
                          [ 0.            ,  0.75          ,  0.166666666667],
                          [ 0.            ,  0.75          ,  0.5           ],
                          [ 0.            ,  0.75          ,  0.833333333333],
                          [ 0.5           ,  0.25          ,  0.166666666667],
                          [ 0.5           ,  0.25          ,  0.5           ],
                          [ 0.5           ,  0.25          ,  0.833333333333],
                          [ 0.5           ,  0.75          ,  0.166666666667],
                          [ 0.5           ,  0.75          ,  0.5           ],
                          [ 0.5           ,  0.75          ,  0.833333333333],
                          [ 0.25          ,  0.            ,  0.            ],
                          [ 0.25          ,  0.            ,  0.333333333333],
                          [ 0.25          ,  0.            ,  0.666666666667],
                          [ 0.25          ,  0.5           ,  0.            ],
                          [ 0.25          ,  0.5           ,  0.333333333333],
                          [ 0.25          ,  0.5           ,  0.666666666667],
                          [ 0.75          ,  0.            ,  0.            ],
                          [ 0.75          ,  0.            ,  0.333333333333],
                          [ 0.75          ,  0.            ,  0.666666666667],
                          [ 0.75          ,  0.5           ,  0.            ],
                          [ 0.75          ,  0.5           ,  0.333333333333],
                          [ 0.75          ,  0.5           ,  0.666666666667],
                          [ 0.25          ,  0.            ,  0.166666666667],
                          [ 0.25          ,  0.            ,  0.5           ],
                          [ 0.25          ,  0.            ,  0.833333333333],
                          [ 0.25          ,  0.5           ,  0.166666666667],
                          [ 0.25          ,  0.5           ,  0.5           ],
                          [ 0.25          ,  0.5           ,  0.833333333333],
                          [ 0.75          ,  0.            ,  0.166666666667],
                          [ 0.75          ,  0.            ,  0.5           ],
                          [ 0.75          ,  0.            ,  0.833333333333],
                          [ 0.75          ,  0.5           ,  0.166666666667],
                          [ 0.75          ,  0.5           ,  0.5           ],
                          [ 0.75          ,  0.5           ,  0.833333333333],
                          [ 0.25          ,  0.25          ,  0.            ],
                          [ 0.25          ,  0.25          ,  0.333333333333],
                          [ 0.25          ,  0.25          ,  0.666666666667],
                          [ 0.25          ,  0.75          ,  0.            ],
                          [ 0.25          ,  0.75          ,  0.333333333333],
                          [ 0.25          ,  0.75          ,  0.666666666667],
                          [ 0.75          ,  0.25          ,  0.            ],
                          [ 0.75          ,  0.25          ,  0.333333333333],
                          [ 0.75          ,  0.25          ,  0.666666666667],
                          [ 0.75          ,  0.75          ,  0.            ],
                          [ 0.75          ,  0.75          ,  0.333333333333],
                          [ 0.75          ,  0.75          ,  0.666666666667],
                          [ 0.25          ,  0.25          ,  0.166666666667],
                          [ 0.25          ,  0.25          ,  0.5           ],
                          [ 0.25          ,  0.25          ,  0.833333333333],
                          [ 0.25          ,  0.75          ,  0.166666666667],
                          [ 0.25          ,  0.75          ,  0.5           ],
                          [ 0.25          ,  0.75          ,  0.833333333333],
                          [ 0.75          ,  0.25          ,  0.166666666667],
                          [ 0.75          ,  0.25          ,  0.5           ],
                          [ 0.75          ,  0.25          ,  0.833333333333],
                          [ 0.75          ,  0.75          ,  0.166666666667],
                          [ 0.75          ,  0.75          ,  0.5           ],
                          [ 0.75          ,  0.75          ,  0.833333333333],
                          [ 0.125         ,  0.125         ,  0.083333333333],
                          [ 0.125         ,  0.125         ,  0.416666666667],
                          [ 0.125         ,  0.125         ,  0.75          ],
                          [ 0.125         ,  0.625         ,  0.083333333333],
                          [ 0.125         ,  0.625         ,  0.416666666667],
                          [ 0.125         ,  0.625         ,  0.75          ],
                          [ 0.625         ,  0.125         ,  0.083333333333],
                          [ 0.625         ,  0.125         ,  0.416666666667],
                          [ 0.625         ,  0.125         ,  0.75          ],
                          [ 0.625         ,  0.625         ,  0.083333333333],
                          [ 0.625         ,  0.625         ,  0.416666666667],
                          [ 0.625         ,  0.625         ,  0.75          ],
                          [ 0.125         ,  0.125         ,  0.25          ],
                          [ 0.125         ,  0.125         ,  0.583333333333],
                          [ 0.125         ,  0.125         ,  0.916666666667],
                          [ 0.125         ,  0.625         ,  0.25          ],
                          [ 0.125         ,  0.625         ,  0.583333333333],
                          [ 0.125         ,  0.625         ,  0.916666666667],
                          [ 0.625         ,  0.125         ,  0.25          ],
                          [ 0.625         ,  0.125         ,  0.583333333333],
                          [ 0.625         ,  0.125         ,  0.916666666667],
                          [ 0.625         ,  0.625         ,  0.25          ],
                          [ 0.625         ,  0.625         ,  0.583333333333],
                          [ 0.625         ,  0.625         ,  0.916666666667],
                          [ 0.125         ,  0.375         ,  0.083333333333],
                          [ 0.125         ,  0.375         ,  0.416666666667],
                          [ 0.125         ,  0.375         ,  0.75          ],
                          [ 0.125         ,  0.875         ,  0.083333333333],
                          [ 0.125         ,  0.875         ,  0.416666666667],
                          [ 0.125         ,  0.875         ,  0.75          ],
                          [ 0.625         ,  0.375         ,  0.083333333333],
                          [ 0.625         ,  0.375         ,  0.416666666667],
                          [ 0.625         ,  0.375         ,  0.75          ],
                          [ 0.625         ,  0.875         ,  0.083333333333],
                          [ 0.625         ,  0.875         ,  0.416666666667],
                          [ 0.625         ,  0.875         ,  0.75          ],
                          [ 0.125         ,  0.375         ,  0.25          ],
                          [ 0.125         ,  0.375         ,  0.583333333333],
                          [ 0.125         ,  0.375         ,  0.916666666667],
                          [ 0.125         ,  0.875         ,  0.25          ],
                          [ 0.125         ,  0.875         ,  0.583333333333],
                          [ 0.125         ,  0.875         ,  0.916666666667],
                          [ 0.625         ,  0.375         ,  0.25          ],
                          [ 0.625         ,  0.375         ,  0.583333333333],
                          [ 0.625         ,  0.375         ,  0.916666666667],
                          [ 0.625         ,  0.875         ,  0.25          ],
                          [ 0.625         ,  0.875         ,  0.583333333333],
                          [ 0.625         ,  0.875         ,  0.916666666667],
                          [ 0.375         ,  0.125         ,  0.083333333333],
                          [ 0.375         ,  0.125         ,  0.416666666667],
                          [ 0.375         ,  0.125         ,  0.75          ],
                          [ 0.375         ,  0.625         ,  0.083333333333],
                          [ 0.375         ,  0.625         ,  0.416666666667],
                          [ 0.375         ,  0.625         ,  0.75          ],
                          [ 0.875         ,  0.125         ,  0.083333333333],
                          [ 0.875         ,  0.125         ,  0.416666666667],
                          [ 0.875         ,  0.125         ,  0.75          ],
                          [ 0.875         ,  0.625         ,  0.083333333333],
                          [ 0.875         ,  0.625         ,  0.416666666667],
                          [ 0.875         ,  0.625         ,  0.75          ],
                          [ 0.375         ,  0.125         ,  0.25          ],
                          [ 0.375         ,  0.125         ,  0.583333333333],
                          [ 0.375         ,  0.125         ,  0.916666666667],
                          [ 0.375         ,  0.625         ,  0.25          ],
                          [ 0.375         ,  0.625         ,  0.583333333333],
                          [ 0.375         ,  0.625         ,  0.916666666667],
                          [ 0.875         ,  0.125         ,  0.25          ],
                          [ 0.875         ,  0.125         ,  0.583333333333],
                          [ 0.875         ,  0.125         ,  0.916666666667],
                          [ 0.875         ,  0.625         ,  0.25          ],
                          [ 0.875         ,  0.625         ,  0.583333333333],
                          [ 0.875         ,  0.625         ,  0.916666666667],
                          [ 0.375         ,  0.375         ,  0.083333333333],
                          [ 0.375         ,  0.375         ,  0.416666666667],
                          [ 0.375         ,  0.375         ,  0.75          ],
                          [ 0.375         ,  0.875         ,  0.083333333333],
                          [ 0.375         ,  0.875         ,  0.416666666667],
                          [ 0.375         ,  0.875         ,  0.75          ],
                          [ 0.875         ,  0.375         ,  0.083333333333],
                          [ 0.875         ,  0.375         ,  0.416666666667],
                          [ 0.875         ,  0.375         ,  0.75          ],
                          [ 0.875         ,  0.875         ,  0.083333333333],
                          [ 0.875         ,  0.875         ,  0.416666666667],
                          [ 0.875         ,  0.875         ,  0.75          ],
                          [ 0.375         ,  0.375         ,  0.25          ],
                          [ 0.375         ,  0.375         ,  0.583333333333],
                          [ 0.375         ,  0.375         ,  0.916666666667],
                          [ 0.375         ,  0.875         ,  0.25          ],
                          [ 0.375         ,  0.875         ,  0.583333333333],
                          [ 0.375         ,  0.875         ,  0.916666666667],
                          [ 0.875         ,  0.375         ,  0.25          ],
                          [ 0.875         ,  0.375         ,  0.583333333333],
                          [ 0.875         ,  0.375         ,  0.916666666667],
                          [ 0.875         ,  0.875         ,  0.25          ],
                          [ 0.875         ,  0.875         ,  0.583333333333],
                          [ 0.875         ,  0.875         ,  0.916666666667],
                          [ 0.076275      ,  0.076275      ,  0.            ],
                          [ 0.076275      ,  0.076275      ,  0.333333333333],
                          [ 0.076275      ,  0.076275      ,  0.666666666667],
                          [ 0.076275      ,  0.576275      ,  0.            ],
                          [ 0.076275      ,  0.576275      ,  0.333333333333],
                          [ 0.076275      ,  0.576275      ,  0.666666666667],
                          [ 0.576275      ,  0.076275      ,  0.            ],
                          [ 0.576275      ,  0.076275      ,  0.333333333333],
                          [ 0.576275      ,  0.076275      ,  0.666666666667],
                          [ 0.576275      ,  0.576275      ,  0.            ],
                          [ 0.576275      ,  0.576275      ,  0.333333333333],
                          [ 0.576275      ,  0.576275      ,  0.666666666667],
                          [ 0.076275      ,  0.076275      ,  0.166666666667],
                          [ 0.076275      ,  0.076275      ,  0.5           ],
                          [ 0.076275      ,  0.076275      ,  0.833333333333],
                          [ 0.076275      ,  0.576275      ,  0.166666666667],
                          [ 0.076275      ,  0.576275      ,  0.5           ],
                          [ 0.076275      ,  0.576275      ,  0.833333333333],
                          [ 0.576275      ,  0.076275      ,  0.166666666667],
                          [ 0.576275      ,  0.076275      ,  0.5           ],
                          [ 0.576275      ,  0.076275      ,  0.833333333333],
                          [ 0.576275      ,  0.576275      ,  0.166666666667],
                          [ 0.576275      ,  0.576275      ,  0.5           ],
                          [ 0.576275      ,  0.576275      ,  0.833333333333],
                          [ 0.076275      ,  0.326275      ,  0.            ],
                          [ 0.076275      ,  0.326275      ,  0.333333333333],
                          [ 0.076275      ,  0.326275      ,  0.666666666667],
                          [ 0.076275      ,  0.826275      ,  0.            ],
                          [ 0.076275      ,  0.826275      ,  0.333333333333],
                          [ 0.076275      ,  0.826275      ,  0.666666666667],
                          [ 0.576275      ,  0.326275      ,  0.            ],
                          [ 0.576275      ,  0.326275      ,  0.333333333333],
                          [ 0.576275      ,  0.326275      ,  0.666666666667],
                          [ 0.576275      ,  0.826275      ,  0.            ],
                          [ 0.576275      ,  0.826275      ,  0.333333333333],
                          [ 0.576275      ,  0.826275      ,  0.666666666667],
                          [ 0.076275      ,  0.326275      ,  0.166666666667],
                          [ 0.076275      ,  0.326275      ,  0.5           ],
                          [ 0.076275      ,  0.326275      ,  0.833333333333],
                          [ 0.076275      ,  0.826275      ,  0.166666666667],
                          [ 0.076275      ,  0.826275      ,  0.5           ],
                          [ 0.076275      ,  0.826275      ,  0.833333333333],
                          [ 0.576275      ,  0.326275      ,  0.166666666667],
                          [ 0.576275      ,  0.326275      ,  0.5           ],
                          [ 0.576275      ,  0.326275      ,  0.833333333333],
                          [ 0.576275      ,  0.826275      ,  0.166666666667],
                          [ 0.576275      ,  0.826275      ,  0.5           ],
                          [ 0.576275      ,  0.826275      ,  0.833333333333],
                          [ 0.326275      ,  0.076275      ,  0.            ],
                          [ 0.326275      ,  0.076275      ,  0.333333333333],
                          [ 0.326275      ,  0.076275      ,  0.666666666667],
                          [ 0.326275      ,  0.576275      ,  0.            ],
                          [ 0.326275      ,  0.576275      ,  0.333333333333],
                          [ 0.326275      ,  0.576275      ,  0.666666666667],
                          [ 0.826275      ,  0.076275      ,  0.            ],
                          [ 0.826275      ,  0.076275      ,  0.333333333333],
                          [ 0.826275      ,  0.076275      ,  0.666666666667],
                          [ 0.826275      ,  0.576275      ,  0.            ],
                          [ 0.826275      ,  0.576275      ,  0.333333333333],
                          [ 0.826275      ,  0.576275      ,  0.666666666667],
                          [ 0.326275      ,  0.076275      ,  0.166666666667],
                          [ 0.326275      ,  0.076275      ,  0.5           ],
                          [ 0.326275      ,  0.076275      ,  0.833333333333],
                          [ 0.326275      ,  0.576275      ,  0.166666666667],
                          [ 0.326275      ,  0.576275      ,  0.5           ],
                          [ 0.326275      ,  0.576275      ,  0.833333333333],
                          [ 0.826275      ,  0.076275      ,  0.166666666667],
                          [ 0.826275      ,  0.076275      ,  0.5           ],
                          [ 0.826275      ,  0.076275      ,  0.833333333333],
                          [ 0.826275      ,  0.576275      ,  0.166666666667],
                          [ 0.826275      ,  0.576275      ,  0.5           ],
                          [ 0.826275      ,  0.576275      ,  0.833333333333],
                          [ 0.326275      ,  0.326275      ,  0.            ],
                          [ 0.326275      ,  0.326275      ,  0.333333333333],
                          [ 0.326275      ,  0.326275      ,  0.666666666667],
                          [ 0.326275      ,  0.826275      ,  0.            ],
                          [ 0.326275      ,  0.826275      ,  0.333333333333],
                          [ 0.326275      ,  0.826275      ,  0.666666666667],
                          [ 0.826275      ,  0.326275      ,  0.            ],
                          [ 0.826275      ,  0.326275      ,  0.333333333333],
                          [ 0.826275      ,  0.326275      ,  0.666666666667],
                          [ 0.826275      ,  0.826275      ,  0.            ],
                          [ 0.826275      ,  0.826275      ,  0.333333333333],
                          [ 0.826275      ,  0.826275      ,  0.666666666667],
                          [ 0.326275      ,  0.326275      ,  0.166666666667],
                          [ 0.326275      ,  0.326275      ,  0.5           ],
                          [ 0.326275      ,  0.326275      ,  0.833333333333],
                          [ 0.326275      ,  0.826275      ,  0.166666666667],
                          [ 0.326275      ,  0.826275      ,  0.5           ],
                          [ 0.326275      ,  0.826275      ,  0.833333333333],
                          [ 0.826275      ,  0.326275      ,  0.166666666667],
                          [ 0.826275      ,  0.326275      ,  0.5           ],
                          [ 0.826275      ,  0.326275      ,  0.833333333333],
                          [ 0.826275      ,  0.826275      ,  0.166666666667],
                          [ 0.826275      ,  0.826275      ,  0.5           ],
                          [ 0.826275      ,  0.826275      ,  0.833333333333],
                          [ 0.173725      ,  0.173725      ,  0.            ],
                          [ 0.173725      ,  0.173725      ,  0.333333333333],
                          [ 0.173725      ,  0.173725      ,  0.666666666667],
                          [ 0.173725      ,  0.673725      ,  0.            ],
                          [ 0.173725      ,  0.673725      ,  0.333333333333],
                          [ 0.173725      ,  0.673725      ,  0.666666666667],
                          [ 0.673725      ,  0.173725      ,  0.            ],
                          [ 0.673725      ,  0.173725      ,  0.333333333333],
                          [ 0.673725      ,  0.173725      ,  0.666666666667],
                          [ 0.673725      ,  0.673725      ,  0.            ],
                          [ 0.673725      ,  0.673725      ,  0.333333333333],
                          [ 0.673725      ,  0.673725      ,  0.666666666667],
                          [ 0.173725      ,  0.173725      ,  0.166666666667],
                          [ 0.173725      ,  0.173725      ,  0.5           ],
                          [ 0.173725      ,  0.173725      ,  0.833333333333],
                          [ 0.173725      ,  0.673725      ,  0.166666666667],
                          [ 0.173725      ,  0.673725      ,  0.5           ],
                          [ 0.173725      ,  0.673725      ,  0.833333333333],
                          [ 0.673725      ,  0.173725      ,  0.166666666667],
                          [ 0.673725      ,  0.173725      ,  0.5           ],
                          [ 0.673725      ,  0.173725      ,  0.833333333333],
                          [ 0.673725      ,  0.673725      ,  0.166666666667],
                          [ 0.673725      ,  0.673725      ,  0.5           ],
                          [ 0.673725      ,  0.673725      ,  0.833333333333],
                          [ 0.173725      ,  0.423725      ,  0.            ],
                          [ 0.173725      ,  0.423725      ,  0.333333333333],
                          [ 0.173725      ,  0.423725      ,  0.666666666667],
                          [ 0.173725      ,  0.923725      ,  0.            ],
                          [ 0.173725      ,  0.923725      ,  0.333333333333],
                          [ 0.173725      ,  0.923725      ,  0.666666666667],
                          [ 0.673725      ,  0.423725      ,  0.            ],
                          [ 0.673725      ,  0.423725      ,  0.333333333333],
                          [ 0.673725      ,  0.423725      ,  0.666666666667],
                          [ 0.673725      ,  0.923725      ,  0.            ],
                          [ 0.673725      ,  0.923725      ,  0.333333333333],
                          [ 0.673725      ,  0.923725      ,  0.666666666667],
                          [ 0.173725      ,  0.423725      ,  0.166666666667],
                          [ 0.173725      ,  0.423725      ,  0.5           ],
                          [ 0.173725      ,  0.423725      ,  0.833333333333],
                          [ 0.173725      ,  0.923725      ,  0.166666666667],
                          [ 0.173725      ,  0.923725      ,  0.5           ],
                          [ 0.173725      ,  0.923725      ,  0.833333333333],
                          [ 0.673725      ,  0.423725      ,  0.166666666667],
                          [ 0.673725      ,  0.423725      ,  0.5           ],
                          [ 0.673725      ,  0.423725      ,  0.833333333333],
                          [ 0.673725      ,  0.923725      ,  0.166666666667],
                          [ 0.673725      ,  0.923725      ,  0.5           ],
                          [ 0.673725      ,  0.923725      ,  0.833333333333],
                          [ 0.423725      ,  0.173725      ,  0.            ],
                          [ 0.423725      ,  0.173725      ,  0.333333333333],
                          [ 0.423725      ,  0.173725      ,  0.666666666667],
                          [ 0.423725      ,  0.673725      ,  0.            ],
                          [ 0.423725      ,  0.673725      ,  0.333333333333],
                          [ 0.423725      ,  0.673725      ,  0.666666666667],
                          [ 0.923725      ,  0.173725      ,  0.            ],
                          [ 0.923725      ,  0.173725      ,  0.333333333333],
                          [ 0.923725      ,  0.173725      ,  0.666666666667],
                          [ 0.923725      ,  0.673725      ,  0.            ],
                          [ 0.923725      ,  0.673725      ,  0.333333333333],
                          [ 0.923725      ,  0.673725      ,  0.666666666667],
                          [ 0.423725      ,  0.173725      ,  0.166666666667],
                          [ 0.423725      ,  0.173725      ,  0.5           ],
                          [ 0.423725      ,  0.173725      ,  0.833333333333],
                          [ 0.423725      ,  0.673725      ,  0.166666666667],
                          [ 0.423725      ,  0.673725      ,  0.5           ],
                          [ 0.423725      ,  0.673725      ,  0.833333333333],
                          [ 0.923725      ,  0.173725      ,  0.166666666667],
                          [ 0.923725      ,  0.173725      ,  0.5           ],
                          [ 0.923725      ,  0.173725      ,  0.833333333333],
                          [ 0.923725      ,  0.673725      ,  0.166666666667],
                          [ 0.923725      ,  0.673725      ,  0.5           ],
                          [ 0.923725      ,  0.673725      ,  0.833333333333],
                          [ 0.423725      ,  0.423725      ,  0.            ],
                          [ 0.423725      ,  0.423725      ,  0.333333333333],
                          [ 0.423725      ,  0.423725      ,  0.666666666667],
                          [ 0.423725      ,  0.923725      ,  0.            ],
                          [ 0.423725      ,  0.923725      ,  0.333333333333],
                          [ 0.423725      ,  0.923725      ,  0.666666666667],
                          [ 0.923725      ,  0.423725      ,  0.            ],
                          [ 0.923725      ,  0.423725      ,  0.333333333333],
                          [ 0.923725      ,  0.423725      ,  0.666666666667],
                          [ 0.923725      ,  0.923725      ,  0.            ],
                          [ 0.923725      ,  0.923725      ,  0.333333333333],
                          [ 0.923725      ,  0.923725      ,  0.666666666667],
                          [ 0.423725      ,  0.423725      ,  0.166666666667],
                          [ 0.423725      ,  0.423725      ,  0.5           ],
                          [ 0.423725      ,  0.423725      ,  0.833333333333],
                          [ 0.423725      ,  0.923725      ,  0.166666666667],
                          [ 0.423725      ,  0.923725      ,  0.5           ],
                          [ 0.423725      ,  0.923725      ,  0.833333333333],
                          [ 0.923725      ,  0.423725      ,  0.166666666667],
                          [ 0.923725      ,  0.423725      ,  0.5           ],
                          [ 0.923725      ,  0.423725      ,  0.833333333333],
                          [ 0.923725      ,  0.923725      ,  0.166666666667],
                          [ 0.923725      ,  0.923725      ,  0.5           ],
                          [ 0.923725      ,  0.923725      ,  0.833333333333],
                          [ 0.201275      ,  0.048725      ,  0.083333333333],
                          [ 0.201275      ,  0.048725      ,  0.416666666667],
                          [ 0.201275      ,  0.048725      ,  0.75          ],
                          [ 0.201275      ,  0.548725      ,  0.083333333333],
                          [ 0.201275      ,  0.548725      ,  0.416666666667],
                          [ 0.201275      ,  0.548725      ,  0.75          ],
                          [ 0.701275      ,  0.048725      ,  0.083333333333],
                          [ 0.701275      ,  0.048725      ,  0.416666666667],
                          [ 0.701275      ,  0.048725      ,  0.75          ],
                          [ 0.701275      ,  0.548725      ,  0.083333333333],
                          [ 0.701275      ,  0.548725      ,  0.416666666667],
                          [ 0.701275      ,  0.548725      ,  0.75          ],
                          [ 0.201275      ,  0.048725      ,  0.25          ],
                          [ 0.201275      ,  0.048725      ,  0.583333333333],
                          [ 0.201275      ,  0.048725      ,  0.916666666667],
                          [ 0.201275      ,  0.548725      ,  0.25          ],
                          [ 0.201275      ,  0.548725      ,  0.583333333333],
                          [ 0.201275      ,  0.548725      ,  0.916666666667],
                          [ 0.701275      ,  0.048725      ,  0.25          ],
                          [ 0.701275      ,  0.048725      ,  0.583333333333],
                          [ 0.701275      ,  0.048725      ,  0.916666666667],
                          [ 0.701275      ,  0.548725      ,  0.25          ],
                          [ 0.701275      ,  0.548725      ,  0.583333333333],
                          [ 0.701275      ,  0.548725      ,  0.916666666667],
                          [ 0.201275      ,  0.298725      ,  0.083333333333],
                          [ 0.201275      ,  0.298725      ,  0.416666666667],
                          [ 0.201275      ,  0.298725      ,  0.75          ],
                          [ 0.201275      ,  0.798725      ,  0.083333333333],
                          [ 0.201275      ,  0.798725      ,  0.416666666667],
                          [ 0.201275      ,  0.798725      ,  0.75          ],
                          [ 0.701275      ,  0.298725      ,  0.083333333333],
                          [ 0.701275      ,  0.298725      ,  0.416666666667],
                          [ 0.701275      ,  0.298725      ,  0.75          ],
                          [ 0.701275      ,  0.798725      ,  0.083333333333],
                          [ 0.701275      ,  0.798725      ,  0.416666666667],
                          [ 0.701275      ,  0.798725      ,  0.75          ],
                          [ 0.201275      ,  0.298725      ,  0.25          ],
                          [ 0.201275      ,  0.298725      ,  0.583333333333],
                          [ 0.201275      ,  0.298725      ,  0.916666666667],
                          [ 0.201275      ,  0.798725      ,  0.25          ],
                          [ 0.201275      ,  0.798725      ,  0.583333333333],
                          [ 0.201275      ,  0.798725      ,  0.916666666667],
                          [ 0.701275      ,  0.298725      ,  0.25          ],
                          [ 0.701275      ,  0.298725      ,  0.583333333333],
                          [ 0.701275      ,  0.298725      ,  0.916666666667],
                          [ 0.701275      ,  0.798725      ,  0.25          ],
                          [ 0.701275      ,  0.798725      ,  0.583333333333],
                          [ 0.701275      ,  0.798725      ,  0.916666666667],
                          [ 0.451275      ,  0.048725      ,  0.083333333333],
                          [ 0.451275      ,  0.048725      ,  0.416666666667],
                          [ 0.451275      ,  0.048725      ,  0.75          ],
                          [ 0.451275      ,  0.548725      ,  0.083333333333],
                          [ 0.451275      ,  0.548725      ,  0.416666666667],
                          [ 0.451275      ,  0.548725      ,  0.75          ],
                          [ 0.951275      ,  0.048725      ,  0.083333333333],
                          [ 0.951275      ,  0.048725      ,  0.416666666667],
                          [ 0.951275      ,  0.048725      ,  0.75          ],
                          [ 0.951275      ,  0.548725      ,  0.083333333333],
                          [ 0.951275      ,  0.548725      ,  0.416666666667],
                          [ 0.951275      ,  0.548725      ,  0.75          ],
                          [ 0.451275      ,  0.048725      ,  0.25          ],
                          [ 0.451275      ,  0.048725      ,  0.583333333333],
                          [ 0.451275      ,  0.048725      ,  0.916666666667],
                          [ 0.451275      ,  0.548725      ,  0.25          ],
                          [ 0.451275      ,  0.548725      ,  0.583333333333],
                          [ 0.451275      ,  0.548725      ,  0.916666666667],
                          [ 0.951275      ,  0.048725      ,  0.25          ],
                          [ 0.951275      ,  0.048725      ,  0.583333333333],
                          [ 0.951275      ,  0.048725      ,  0.916666666667],
                          [ 0.951275      ,  0.548725      ,  0.25          ],
                          [ 0.951275      ,  0.548725      ,  0.583333333333],
                          [ 0.951275      ,  0.548725      ,  0.916666666667],
                          [ 0.451275      ,  0.298725      ,  0.083333333333],
                          [ 0.451275      ,  0.298725      ,  0.416666666667],
                          [ 0.451275      ,  0.298725      ,  0.75          ],
                          [ 0.451275      ,  0.798725      ,  0.083333333333],
                          [ 0.451275      ,  0.798725      ,  0.416666666667],
                          [ 0.451275      ,  0.798725      ,  0.75          ],
                          [ 0.951275      ,  0.298725      ,  0.083333333333],
                          [ 0.951275      ,  0.298725      ,  0.416666666667],
                          [ 0.951275      ,  0.298725      ,  0.75          ],
                          [ 0.951275      ,  0.798725      ,  0.083333333333],
                          [ 0.951275      ,  0.798725      ,  0.416666666667],
                          [ 0.951275      ,  0.798725      ,  0.75          ],
                          [ 0.451275      ,  0.298725      ,  0.25          ],
                          [ 0.451275      ,  0.298725      ,  0.583333333333],
                          [ 0.451275      ,  0.298725      ,  0.916666666667],
                          [ 0.451275      ,  0.798725      ,  0.25          ],
                          [ 0.451275      ,  0.798725      ,  0.583333333333],
                          [ 0.451275      ,  0.798725      ,  0.916666666667],
                          [ 0.951275      ,  0.298725      ,  0.25          ],
                          [ 0.951275      ,  0.298725      ,  0.583333333333],
                          [ 0.951275      ,  0.298725      ,  0.916666666667],
                          [ 0.951275      ,  0.798725      ,  0.25          ],
                          [ 0.951275      ,  0.798725      ,  0.583333333333],
                          [ 0.951275      ,  0.798725      ,  0.916666666667],
                          [ 0.048725      ,  0.201275      ,  0.083333333333],
                          [ 0.048725      ,  0.201275      ,  0.416666666667],
                          [ 0.048725      ,  0.201275      ,  0.75          ],
                          [ 0.048725      ,  0.701275      ,  0.083333333333],
                          [ 0.048725      ,  0.701275      ,  0.416666666667],
                          [ 0.048725      ,  0.701275      ,  0.75          ],
                          [ 0.548725      ,  0.201275      ,  0.083333333333],
                          [ 0.548725      ,  0.201275      ,  0.416666666667],
                          [ 0.548725      ,  0.201275      ,  0.75          ],
                          [ 0.548725      ,  0.701275      ,  0.083333333333],
                          [ 0.548725      ,  0.701275      ,  0.416666666667],
                          [ 0.548725      ,  0.701275      ,  0.75          ],
                          [ 0.048725      ,  0.201275      ,  0.25          ],
                          [ 0.048725      ,  0.201275      ,  0.583333333333],
                          [ 0.048725      ,  0.201275      ,  0.916666666667],
                          [ 0.048725      ,  0.701275      ,  0.25          ],
                          [ 0.048725      ,  0.701275      ,  0.583333333333],
                          [ 0.048725      ,  0.701275      ,  0.916666666667],
                          [ 0.548725      ,  0.201275      ,  0.25          ],
                          [ 0.548725      ,  0.201275      ,  0.583333333333],
                          [ 0.548725      ,  0.201275      ,  0.916666666667],
                          [ 0.548725      ,  0.701275      ,  0.25          ],
                          [ 0.548725      ,  0.701275      ,  0.583333333333],
                          [ 0.548725      ,  0.701275      ,  0.916666666667],
                          [ 0.048725      ,  0.451275      ,  0.083333333333],
                          [ 0.048725      ,  0.451275      ,  0.416666666667],
                          [ 0.048725      ,  0.451275      ,  0.75          ],
                          [ 0.048725      ,  0.951275      ,  0.083333333333],
                          [ 0.048725      ,  0.951275      ,  0.416666666667],
                          [ 0.048725      ,  0.951275      ,  0.75          ],
                          [ 0.548725      ,  0.451275      ,  0.083333333333],
                          [ 0.548725      ,  0.451275      ,  0.416666666667],
                          [ 0.548725      ,  0.451275      ,  0.75          ],
                          [ 0.548725      ,  0.951275      ,  0.083333333333],
                          [ 0.548725      ,  0.951275      ,  0.416666666667],
                          [ 0.548725      ,  0.951275      ,  0.75          ],
                          [ 0.048725      ,  0.451275      ,  0.25          ],
                          [ 0.048725      ,  0.451275      ,  0.583333333333],
                          [ 0.048725      ,  0.451275      ,  0.916666666667],
                          [ 0.048725      ,  0.951275      ,  0.25          ],
                          [ 0.048725      ,  0.951275      ,  0.583333333333],
                          [ 0.048725      ,  0.951275      ,  0.916666666667],
                          [ 0.548725      ,  0.451275      ,  0.25          ],
                          [ 0.548725      ,  0.451275      ,  0.583333333333],
                          [ 0.548725      ,  0.451275      ,  0.916666666667],
                          [ 0.548725      ,  0.951275      ,  0.25          ],
                          [ 0.548725      ,  0.951275      ,  0.583333333333],
                          [ 0.548725      ,  0.951275      ,  0.916666666667],
                          [ 0.298725      ,  0.201275      ,  0.083333333333],
                          [ 0.298725      ,  0.201275      ,  0.416666666667],
                          [ 0.298725      ,  0.201275      ,  0.75          ],
                          [ 0.298725      ,  0.701275      ,  0.083333333333],
                          [ 0.298725      ,  0.701275      ,  0.416666666667],
                          [ 0.298725      ,  0.701275      ,  0.75          ],
                          [ 0.798725      ,  0.201275      ,  0.083333333333],
                          [ 0.798725      ,  0.201275      ,  0.416666666667],
                          [ 0.798725      ,  0.201275      ,  0.75          ],
                          [ 0.798725      ,  0.701275      ,  0.083333333333],
                          [ 0.798725      ,  0.701275      ,  0.416666666667],
                          [ 0.798725      ,  0.701275      ,  0.75          ],
                          [ 0.298725      ,  0.201275      ,  0.25          ],
                          [ 0.298725      ,  0.201275      ,  0.583333333333],
                          [ 0.298725      ,  0.201275      ,  0.916666666667],
                          [ 0.298725      ,  0.701275      ,  0.25          ],
                          [ 0.298725      ,  0.701275      ,  0.583333333333],
                          [ 0.298725      ,  0.701275      ,  0.916666666667],
                          [ 0.798725      ,  0.201275      ,  0.25          ],
                          [ 0.798725      ,  0.201275      ,  0.583333333333],
                          [ 0.798725      ,  0.201275      ,  0.916666666667],
                          [ 0.798725      ,  0.701275      ,  0.25          ],
                          [ 0.798725      ,  0.701275      ,  0.583333333333],
                          [ 0.798725      ,  0.701275      ,  0.916666666667],
                          [ 0.298725      ,  0.451275      ,  0.083333333333],
                          [ 0.298725      ,  0.451275      ,  0.416666666667],
                          [ 0.298725      ,  0.451275      ,  0.75          ],
                          [ 0.298725      ,  0.951275      ,  0.083333333333],
                          [ 0.298725      ,  0.951275      ,  0.416666666667],
                          [ 0.298725      ,  0.951275      ,  0.75          ],
                          [ 0.798725      ,  0.451275      ,  0.083333333333],
                          [ 0.798725      ,  0.451275      ,  0.416666666667],
                          [ 0.798725      ,  0.451275      ,  0.75          ],
                          [ 0.798725      ,  0.951275      ,  0.083333333333],
                          [ 0.798725      ,  0.951275      ,  0.416666666667],
                          [ 0.798725      ,  0.951275      ,  0.75          ],
                          [ 0.298725      ,  0.451275      ,  0.25          ],
                          [ 0.298725      ,  0.451275      ,  0.583333333333],
                          [ 0.298725      ,  0.451275      ,  0.916666666667],
                          [ 0.298725      ,  0.951275      ,  0.25          ],
                          [ 0.298725      ,  0.951275      ,  0.583333333333],
                          [ 0.298725      ,  0.951275      ,  0.916666666667],
                          [ 0.798725      ,  0.451275      ,  0.25          ],
                          [ 0.798725      ,  0.451275      ,  0.583333333333],
                          [ 0.798725      ,  0.451275      ,  0.916666666667],
                          [ 0.798725      ,  0.951275      ,  0.25          ],
                          [ 0.798725      ,  0.951275      ,  0.583333333333],
                          [ 0.798725      ,  0.951275      ,  0.916666666667]]

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

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

# Define the Matsui-potential for titania.
potentialSet = TremoloXPotentialSet('Matsui_TiO')
potentialSet.addParticleType(ParticleType(symbol='O', mass=15.9994 * atomic_mass_unit, charge=-1.098, sigma=None, sigma14=None, epsilon=None, epsilon14=None))
potentialSet.addParticleType(ParticleType(symbol='Ti', mass=47.867 * atomic_mass_unit, charge=2.196, sigma=None, sigma14=None, epsilon=None, epsilon14=None))

potentialSet.addPotential(TosiFumiPotential(particleType1 = 'O', particleType2 = 'Ti', A=0.008342*eV, B=5.154639*Angstrom**-1, sigma=2.8171*Angstrom, C=12.48685*eV*Angstrom**6, D=0.0*eV*Angstrom**8, r_i=6.0*Angstrom, r_cut=7.5*Angstrom))
potentialSet.addPotential(TosiFumiPotential(particleType1 = 'O', particleType2 = 'O', A=0.010062*eV, B=4.27350*Angstrom**-1, sigma=3.2678*Angstrom, C=29.96845*eV*Angstrom**6, D=0.0*eV*Angstrom**8, r_i=6.0*Angstrom, r_cut=7.5*Angstrom))
potentialSet.addPotential(TosiFumiPotential(particleType1 = 'Ti', particleType2 = 'Ti', A=0.006622*eV, B=6.49351*Angstrom**-1, sigma=2.3664*Angstrom, C=5.202856*eV*Angstrom**6, D=0.0*eV*Angstrom**8, r_i=6.0*Angstrom, r_cut=7.5*Angstrom))

potentialSet.setCoulombSolver(CoulombSPME(r_cut=9.0*Angstrom, accuracy=1.0e-4))

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,
    initial_velocity=initial_velocity
)

md_trajectory = MolecularDynamics(
    bulk_configuration,
    constraints=[],
    trajectory_filename='TiOx_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 3.8 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_Ti = len(numpy.where(numpy.array(elements)==Titanium)[0])
N_O  = len(numpy.where(numpy.array(elements)==Oxygen)[0])

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

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

# 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,
    initial_velocity=initial_velocity
)

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

bulk_configuration = md_trajectory.lastImage()
