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

base_file

File of the current Sile

file

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.