sisl.io.siesta.fcSileSiesta

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

Bases: sisl.io.siesta.SileSiesta

Force constant file

Methods

dir_file([filename, filename_base])

File of the current Sile

read(*args, **kwargs)

Generic read method which should be overloaded in child-classes

read_force([displacement, na])

Reads all displacement forces by multiplying with the displacement value

read_force_constant([na])

Reads the force-constant stored in the FC file

write(*args, **kwargs)

Generic write method which should be overloaded in child-classes

base_file

File of the current Sile

file

File of the current Sile

__init__(filename, mode='r', comment=None, *args, **kwargs)
property base_file

File of the current Sile

dir_file(filename=None, filename_base='')

File of the current Sile

property file

File of the current Sile

read(*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(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
  • displacement (float, 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.

  • na (int, optional) – number of atoms in geometry (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 – force constant matrix times the displacement, see read_force_constant for details regarding data layout.

Return type

(displaced atoms, d[xyz], [-+], total atoms, xyz)

read_force_constant(na=None)[source]

Reads the force-constant stored in the FC file

Parameters

na (int, optional) – number of atoms in the unit-cell, if not specified it will guess on only one atom displacement.

Returns

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

Return type

(displacement, d[xyz], [-+], atoms, xyz)

write(*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.