Zone Reconstruction

The reconstruction of the whole Brillouin zone is done by replicating the ab-initio results, which cover a sub-region of the Brillouin zone, with symmetry operations. These symmetry operations are calculated automatically:

  • The atoms names and positions are read from the ab-initio output file.
  • A tetraedron whose vertexes are the first atom of the unit cell, in four adjacient cells, is considered
  • All the possible combinations of putting the tetraedron vertexes over the atomic positions of the lattice are tested, retaining the iso-metrics and iso-atomic ones.
  • For each match, the roto-translational transformation is extracted in the form of an unitary matrix plus a translational vector.
  • This transformation is considered as a candidate for the position of good simmetry operation.
  • The candidates are checked by applying it to the whole grid.
  • The Fourier transform of the transformated grid is taken for each atomic specie. (by associating a Dirac to each atom)
  • The symmetry operation is finally validated if all the Fourier transforms matches.

The script make_TDS_Simmetrization reconstruct a whole Brillouin zone from CASTEP output files using symmetry operations that are automatically deduced from the crystal structure. The output from CASTEP contains a subset of a Monkhorst-Pack grid which covers a part of the Brillouin zone. Knowing the symmetry operations, the whole Brillouin zone can be recovered. This is the task of make_TDS_Simmetrization.

The usage is

make_TDS_Simmetrization castep_filename input_filename optional_extra_file
  • The optional_extra_file is not necessary. If given the reading procedure will

    try to find therein the Polarizability and Born effective charges. These informations will then be written to the hdf5 outputfile for further use when calculating nonanalytical corrections. The reading is done by

    TDS_Reading.ReadCastep(filename, filename_extra=None, energy_scaling=1, tipo='Castep')[source]
  • The input_file must set the variables

    • APPLYTIMEREVERSAL
    • CALCULATECOMPLEMENT
    • energy_scaling
    • CODE ( optional, defaults to Castep)

using a python syntax These variables are documented with docstrings below

make_TDS_Simmetrization.APPLYTIMEREVERSAL = 1
  • write APPLYTIMEREVERSAL=1 in input file to duplicate eigenvectors at K to get those at -K by complex conjugation
  • write APPLYTIMEREVERSAL=0 otherwise
make_TDS_Simmetrization.CALCULATECOMPLEMENT = 0

docstring CALCULATECOMPLEMENT

make_TDS_Simmetrization.energy_scaling = 1.0

docstring energy_scaling

The script produces an output file as described automatically in module make_TDS_Simmetrization. The following information has been automatically extracted from make_TDS_Simmetrization.py

TDS_Simmetry.GetAllReplicated(calculatedDatas, simmetries_dict, filename=None, Nfour_interp=None, md5postfix=None, overwrite=False, key=None, APPLYTIMEREVERSAL=1, CALCULATEFOURIER=1, CALCULATECOMPLEMENT=0, MAKING=0, MAKINGFOURIER=0, ZBORN_info=None)[source]

This routine writes informations about the whole Brillouin zone that has been obtained by replication. The output is written into a hdf5 file.

Some of the most important calculated data, for further calculations are :

  • h5[key+”/totQs”] = totQs
  • h5[key+”/totDMs”] = totDMs

where totQs is a list of Q vectors, totDMs is a list of dynamical matrices ( units??? )

The output file name is filename+”.”+md5postfix, where filename is the ab-initio (CASTEP, phonopy) filename and md5postfix is its md5 sum