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 force-constant stored in the FC file
write
(*args, **kwargs)Generic write method which should be overloaded in child-classes
File of the current Sile
File of the current Sile
- class InfoAttr(attr, regex, parser, doc='', updatable=False, default=None, found=False)
Bases:
object
Holder for parsing lines and extracting information from text files
This consists of:
- attr:
the name of the attribute This will be the sile.info. access point.
- regex:
the regular expression used to match a line. If a str, it will be compiled as is to a regex pattern. regex.match(line) will be used to check if the value should be updated.
- parser:
if regex.match(line) returns a match that is true, then this parser will be executed. The parser must be a function accepting two arguments:
def parser(attr, match)
where
attr
is this object, and match is the match done on the line. (Note that match.string will return the full line used to match against).- updatable:
control whether a new match on the line will update using
parser
. If false, only the first match will update the value- default:
the default value of the attribute
- found:
whether the value has been found in the file.
- __init__(attr, regex, parser, doc='', updatable=False, default=None, found=False)
- attr
- copy()
- doc
- documentation()
Returns a documentation string for this object
- found
- parser
- process(line)
- regex
- updatable
- value
- __init__(filename, mode='r', *args, **kwargs)
Just to pass away the args and kwargs
- base_directory(relative_to='.')
Retrieve the base directory of the file, relative to the path relative_to
- property base_file
File of the current Sile
- close()
- 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.