def run_swap(nsteps, saveFrequency, engineFilePath):
# activate coordination number. Play with definition and set_used to True
ACN_CONSTRAINT.set_coordination_number_definition( [ ('ti','ti',2.5, 3.5, 4, 8),
('ti','ni',2.2, 3.1, 6, 10),
('ni','ni',2.5, 3.5, 4, 8),
('ni','ti',2.2, 3.1, 6, 10) ] )
ACN_CONSTRAINT.set_used(False)
# reset groups
ENGINE.set_groups_as_atoms()
#### set swap generators Ni-->Ti and Ti-->Ni ###
allElements = ENGINE.allElements
niSwapList = [[idx] for idx in range(len(allElements)) if allElements[idx]=='ni']
tiSwapList = [[idx] for idx in range(len(allElements)) if allElements[idx]=='ti']
# create swap generator
toNiSG = SwapPositionsGenerator(swapList=niSwapList)
toTiSG = SwapPositionsGenerator(swapList=tiSwapList)
# set swap generator to groups
for g in ENGINE.groups:
if allElements[g.indexes[0]]=='ni':
g.set_move_generator(toTiSG)
elif allElements[g.indexes[0]]=='ti':
g.set_move_generator(toNiSG)
# run
ENGINE.run(numberOfSteps=nsteps, saveFrequency=saveFrequency)