Dealing with symmetry of ordered primitive cell during DFT structure relaxation

I have a large disordered cubic structure that I would like to do AIMD on to look at cation diffusion. I found the primitive cell and then ordered it to create several configurations. I will then relax each one and select the lowest energy configuration for AIMD. But first I have to relax the structures.

Ordering the cell will naturally decrease the symmetry of the structure to something like tetragonal or monoclinic. Typically for a calculation in VASP we switch symmetry on (ISYM=2). In this case, VASP detects tetragonal symmetry and forces the lattice parameters to fit those symmetry constraints, which is incorrect because I know the structure is cubic.

So my first question is: Is this okay? I presume it isn't.

If not: What's the best or correct way to deal with this? Just setting ISYM=0 or -1? Or is it better to constrain the cell shape with ISIF=2? Or maybe both?

I was under the impression that the structure needs to be fully relaxed before doing AIMD: So then setting ISIF=2 would not be correct?

• +1 for all the effort you've put into answering the question before asking for help! Hopefully a VASP expert can help you :) Jul 21 '20 at 3:45
• +1 Can you clarify your question? If the cell is disorered, what do you mean it has cubic symmetry? Does this mean "on average"? Also, what do you mean by "ordered it to create several configurations"? I would naïvely think that there is a single ordered configuration with high symmetry? Jul 21 '20 at 7:40
• That's right, the structure on average is disordered. So the structure is known by diffraction methods to be cubic and exhibits disorder on certain Li sites (partial occupancy on the sites). I found the primitive cell, then created several different configurations by ordering the Li atoms in the primitive cell. Jul 21 '20 at 15:40

1 Answer

Assuming that the structure starts from one symmetry and you distort it into another, VASP will want to find the symmetry it expects and use it. One straightforward way to fix this problem while also increasing the chance of finding the actual minima is to break the symmetry yourself.

One way to do this is to randomly displace atoms by a small amount. This can be done using ASE with the rattle command. By randomly displacing the structure a few times you can also ensure that random minor numerical noise doesn't result in relaxing into one structure versus another. If you are expecting large displacements, you might find that the structure relaxes to different configurations depending on how they are rattled. This is a very manual and very primitive global relaxation method but works quite well when you start from a good guess.

Here is a simple python script that would allow you to rattle atoms on the command line using ASE.

#! /usr/bin/env python
from ase import Atoms
from sys import argv
from ase.io import read, write
import random

file = argv[1]
rattle_amount = float(argv[2])
atoms = read(file)
atoms.rattle(rattle_amount, seed=int(random.uniform(0,2000)))
write(file, atoms)


This can be used as follows (with any file format ASE supports).

python rattle.py bulk_structure.POSCAR 0.1

• Thank you for your response! This was an interesting exercise. So running the calculation of the rattled structure took ~4 times longer I guess because the atoms were further away from where they are expected to be. The energy is nearly the same as the regular non-rattled structure though (they are 10^-6 eV larger). The resulting lattice parameters are not exactly tetragonal but they're still really really close to tetragonal. Also the total drift on the forces are quite large ~0.01eV/A, whereas before they were 0.000001 eV/A. Is there a reason for this? Aug 5 '20 at 0:55
• symmetry before was probably making drift cancel. I am unsure if 0.01 eV/A is a large drift though, maybe someone else knows / this should be another potential question. But the fact you find nearly tetragonal geometry with the same energy means that tetragonal is probably correct but it found a very shallow local minimum. Aug 5 '20 at 1:44