sisl.io.siesta.fcSileSiesta
- class sisl.io.siesta.fcSileSiesta(filename, *args, **kwargs)
Bases:
SileSiesta
Force constant file
Methods
base_directory
([relative_to])Retrieve the base directory of the file, relative to the path relative_to
close
()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 Hessian/force constant stored in the FC file
read_hessian
([na])Reads the Hessian/force constant stored in the FC file
write
(*args, **kwargs)Generic write method which should be overloaded in child-classes
Attributes
File of the current Sile
File of the current Sile
- base_directory(relative_to='.')
Retrieve the base directory of the file, relative to the path relative_to
- close()
- dir_file(filename=None, filename_base='')
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: float | None = None, na: int | None = None) ndarray [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 – 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 – 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 (
(displaced atoms
,d[xyz]
,[-+]
,total atoms
,xyz)
) – force constant matrix times the displacement, seeread_force_constant
for details regarding data layout.
- read_force_constant(na: int | None = None)
Reads the Hessian/force constant stored in the FC file
- Parameters:
na – 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.
- read_hessian(na: int | None = None)[source]
Reads the Hessian/force constant stored in the FC file
- Parameters:
na – 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(*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.
- property base_file
File of the current Sile
- property file
File of the current Sile