pyepfd_io module

This module contains classes the deals with I/O operations based on a finite-difference phonon calculations performed using PyEPFD’s coord_util.ionic_mover and elph_classes.phonon_calculator classes.

class pyepfd_io.write_pyepfd_info(inp_dynmat=None, dynmat=None, ref_dynmat=None, mass=None, etotals=None, opt_coord=None, atoms=None, cell=None, mode='enmfd', deltax=0.001, deltae=0.001, ngrid=1, file_name='test.xml', asr='crystal')

Bases: object

This class writes a checkpoint xml file containing crucial informations after a phonon calculation.

Arguments:

inp_dynmat = Input dynamical matrix for NMFD/ENMFD phonon. It is a numpy array of 3 N x 3 N; where N is the number of atoms.

dynmat = Obtained dynamical matrix after FD/NMFD/ENMFD phonon calculation. It is also numpy array of 3 N x 3 N; where N is the number of atoms.

ref_dynmat = Refined dynamical matrix after FD/NMFD/ENMFD phonon calculation. Refinement is done applying asr to dynmat. It is also a numpy array of 3 N x 3 N; where N is the number of atoms.

mass = (3 N ) numpy array of mass matrix

cell = A numpy array of length 6. First 3 numbers are cell length (atomic unit) and last three numbers are angles (degrees) between cell vectors.

etotals = (6 N + 1) numpy array of Born-Openheimer energies (<etotals> for qbox)

opt_coord = (3 N) numpy array of Cartesian coordinates of optimized geometry.

atoms = List of strings of length N containing atom-symbols.

mode = Finite displacement mode.

deltax = A displacement (float) in atomic unit (Bohr)

deltae = Energy scaled displacement (float) in atomic_unit (Hartree)

ngrid = Number of displacement grid points for central difference

asr Acoustic sum rule.

file_name = Output/ checkpoint file name

Returns

An output with file name file_name.

class pyepfd_io.read_pyepfd_info(file_path='RESTART')

Bases: object

This class reads a checkpoint/restart file created by pyepfd after a phonon calculation. This information is stored in several objects within this class.

Arguments:

file_path = Path to the restart/ checkpoint file

Returns:

Creates following objects within the class.

asr = A string storing asr information.

deltax = Normal mode displacement ( deltax in other classes) information.

deltae = Energy scaled displacement (deltae in other classes) in atomic_unit (Hartree)

ngrid = Number of displacement grid points for central difference

inp_dynmatrix = Input dynamical matrix for NMFD/ENMFD phonon. It is a numpy array of 3 N x 3 N; where N is the number of atoms.

dynmatrix = Obtained dynamical matrix after FD/NMFD/ENMFD phonon calculation. It is also numpy array of 3 N x 3 N; where N is the number of atoms.

ref_dynmatrix = Refined dynamical matrix after FD/NMFD/ENMFD phonon calculation. Refinement is done applying asr to dynmat. It is also a numpy array of 3 N x 3 N; where N is the number of atoms.

mass = Mass matrix

coord = Coordinates of optimized geometry. A float array of length N.

atoms = A list of atoms with length N .

cell = A numpy array of length 6. First 3 numbers are cell length (atomic unit) and last three numbers are angles (degrees) between cell vectors.

class pyepfd_io.read_nmdisp_log(file_path)

Bases: object

This class reads the log file created by PyEPFD during normal mode displacements and stores the displacement related informations. This could be used to parse, e.g., an NMS or ENMS calculations and plot 1D-PES along those modes.

Arguments:

file_path = Full path to the logfile

Returns:

Creates following objects within the class.

modes = A python list of modes sampled.

disp_steps_au = A python list of displacement steps in atomic unit.

disp_steps_scaled = A python list of displacement steps in frequency scaled coordinate (unitless).

disp_au = A Python dictionary whose keys are normal mode indices sampled, same as modes above. If we call that key, then it returns a list containing the exact displacement in atomic unit.

disp_scaled = A Python dictionary whose keys are normal mode indices sampled, same as modes above. If we call that key, then it returns a list containing the exact displacements for that mode in frequency scaled coordinate.

safe_float_convert(value)