fcSileSiesta

class sisl.io.siesta.fcSileSiesta(filename, mode='r', comment=None, *args, **kwargs)[source]

Force constant file

Attributes

base_file

File of the current Sile

file

File of the current Sile

Methods

__init__(self, filename[, mode, comment])

Initialize self.

dir_file(self[, filename])

File of the current Sile

exist(self)

Query whether the file exists

read(self, \*args, \*\*kwargs)

Generic read method which should be overloaded in child-classes

read_force(self[, displacement, na])

Reads all displacement forces by multiplying with the displacement value

read_force_constant(self[, na])

Reads the force-constant stored in the FC file

write(self, \*args, \*\*kwargs)

Generic write method which should be overloaded in child-classes

property base_file

File of the current Sile

dir_file(self, filename=None)

File of the current Sile

exist(self)

Query whether the file exists

property file

File of the current Sile

read(self, *args, **kwargs)

Generic read method which should be overloaded in child-classes

Parameters
kwargs :

keyword arguments will try and search for the attribute read_<> and call it with the remaining **kwargs as arguments.

read_force(self, displacement=None, na=None)[source]

Reads all displacement forces by multiplying with the displacement value

Since the force constant file does not contain the non-displaced configuration this will only return forces on the displaced configurations minus the forces from the non-displaced configuration.

This may be used in conjunction with phonopy by noticing that Siesta FC-runs does the displacements in reverse order (-x/+x vs. +x/-x). In this case one should reorder the elements like this:

>>> fc = np.roll(fc, 1, axis=2)
Parameters
displacementfloat, optional

the used displacement in the calculation, since Siesta 4.1-b4 this value is written in the FC file and hence not required. If prior Siesta versions are used and this is not supplied the 0.04 Bohr displacement will be assumed.

naint, optional

number of atoms (for returning correct number of atoms), since Siesta 4.1-b4 this value is written in the FC file and hence not required. If prior Siesta versions are used then the file is expected to only contain 1-atom displacement.

Returns
numpy.ndarray(displacement, d[xyz], [-+], atoms, xyz)

force constant matrix times the displacement, see read_force_constant for details regarding data layout.

read_force_constant(self, na=None)[source]

Reads the force-constant stored in the FC file

Parameters
naint, optional

number of atoms in the unit-cell, if not specified it will guess on only one atom displacement.

Returns
numpy.ndarray(displacement, d[xyz], [-+], atoms, xyz)

force constant matrix containing all forces. The 2nd dimension contains contains the directions, 3rd dimension contains -/+ displacements.

write(self, *args, **kwargs)

Generic write method which should be overloaded in child-classes

Parameters
**kwargs :

keyword arguments will try and search for the attribute write_ and call it with the remaining **kwargs as arguments.