fcSileSiesta¶
-
class
sisl.io.siesta.
fcSileSiesta
(filename, mode='r', comment=None, *args, **kwargs)[source]¶ Force constant file
Attributes
File of the current Sile
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.
-
property