Supercells
- class conquest2a.supercell.supercell(repeats_x: int, repeats_y: int, repeats_z: int, coords_proc: conquest_coordinates_processor)
Class to produce supercells. CONQUEST deals with orthorhombic cells only. The resulting supercell will therefore be orthorhombic.
- Parameters:
repeats_x (
int) – Number of repeats along the \(a\) lattice vectorrepeats_y (
int) – Number of repeats along the \(b\) lattice vectorrepeats_z (
int) – Number of repeats along the \(c\) lattice vectorcoords_proc (conquest_coordinates_processor) – The
conquest_coordinates_processorto use.
- Raises:
ValueError – If any of the
repeats_*is not a positive integer
- create_supercell() None
This method creates the
Atoms of the new supercell, looping through the original atoms, creating new ones corresponding to the repeats in each direction.In terms of fractional coordinates, we set new coords of the original atoms to be \(x' = x/N_x, y' = y/N_y, z' = z/N_z\)
We then take these new coordinates, and create new atoms of the same elements, with coords \((x', y', z')\) for every
repeats_x,y,zrespectively. i.e. we add \(1/N_x, 1/N_y, 1/N_z\) in the appropriate direction.Example: Consider a bcc crystal defined by A: (0,0,0) and B: (1/2, 1/2, 1/2). Suppose we want to make a 3x2x2 supercell: expect 24 atoms in the final cell. i.e. duplicate 3 in the “a” direction, twice in the other 2 directions. We first rescale the lattice parameters, then we rescale the fractional coordinates
(0,0,0) is trivial, but B gets rescaled to (1/2 * 1/3, 1/2 * 1/2, 1/2 * 1/2) = (1/6, 1/4, 1/4)
However, the original (0,0,0) now has duplicates in x,y,z, namely the new atoms at (0,0,0) + {(1/3, 0, 0), (0, 1/2, 0), (0,0,1/2), …}
- new_num_atoms() int
Gets the number of atoms in the new supercell. Needed for the coordinates file.
- Returns:
The number of atoms in the new supercell
- Return type:
int
- scale_lattice_vectors() None
Produce the supercell’s lattice vectors based on the repeats supplied.