Program

The program has three parts.

Puc

The Puc class is used to construct primitive unit cell, and define the basic distortion operations on the primivite unit cell level.

class puc.Puc(symbols=['A', 'B', 'O'], shift_index=[0, 0, 0])[source]

This module provides basic class for primitive unit cells (PUC) of perovskites and some basic operations on the PUC level to actuate the distortion specified in the “Distortion” class.

Parameters
  • symbols – specifies the symbols of atoms in one primitive unit cell.

  • shift_index – an integer vector indicating the shift from the origin. It is used to indiacte the position of this unit cell in the supercell.

rotate(omega=[0, 0, 0], covera=1.0)[source]

Only O atoms are rotated.

Parameters
  • omega – Rotation angle of oxygen octahedron in a-, b-, c-axis.

  • covera – The ratio of the length of unit cell along c-axis to a-axis, which indicates a small distortion of the unit cell .

shift(u=[0, 0, 0], local_mode=[[0.0, 0.0, 0.0, 0.0, 0.0]])[source]
Parameters
  • u – Magnitudes of the vibration in a-, b-, c-axis.

  • local_mode – Order is in delta_A, delta_B, delta_O-perp, delta_O-perp, delta_O-parallel

Distortion

Build a supercell and generate the desired structures in the reciprocal space based on the transformed information.

class distortion.Distortion(system={'covera': 1.0, 'grid': (2, 2, 2), 'lattice_constant': 4.0, 'symbols': ['Ba', 'Ti', 'O']}, distort=None)[source]

The class sets distortion to perovskite structure.

Basic Information:

Parameters
  • symbols – Symbols of ABO3.

  • lattice_constant – Lattice constant of cubic ABO3.

  • grid – Number of unit cells along the three axes.

  • covera – The ratio of the length of unit cell along c- axis to a- axis, not the supercell.

Parameters to set up the distortion:

Parameters
  • glazer – Glazer notation of distortion.

  • omega – The angles of the rotation along the three axes.

  • u – Magnitudes of the vibration in three axes.

  • k_u – The pattern of shift.

  • local_mode – Eigenvalues of vibration.

rotate_puc(puc)[source]

Rotate the ions in one primitive unit cell.

shift_puc(puc)[source]

Move the ions in one primitive unit cell.

Decode

The Glazor notation is decoded and matched to the corresponding rotation matrix.

glazer.decode_glazer(s)[source]
Input

Glazer notation, e.g., \(a^-a^-a^-\)

Output

Essential information about how to set the tiltings, i.e., \(\mathbf{k}_{\omega_{x,y,z}}\). And the relationship between tilting angles.