fdfSileSiesta

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

Bases: sisl.io.siesta.SileSiesta

FDF-input file

By supplying base you can reference files in other directories. By default the base is the directory given in the file name.

Parameters
  • filename (str) – fdf file

  • mode (str, optional) – opening mode, default to read-only

  • base (str, optional) – base-directory to read output files from.

Examples

>>> fdf = fdfSileSiesta('tmp/RUN.fdf') # reads output files in 'tmp/' folder
>>> fdf = fdfSileSiesta('tmp/RUN.fdf', base='.') # reads output files in './' folder

Attributes

__dict__

__doc__

__module__

__weakref__

list of weak references to the object (if defined)

_write_default

_write_default_only

base_file

File of the current Sile

file

File of the current Sile

Methods

_ArgumentParser_args_single()

Default arguments for the Sile

_SpGeom_replace_geom(spgeom, geometry)

Replace all atoms in spgeom with the atom in geometry while retaining the number of orbitals

__delattr__

Implement delattr(self, name).

__dir__

Default dir() implementation.

__enter__()

Opens the output file and returns it self

__eq__

Return self==value.

__exit__(type, value, traceback)

__format__

Default object formatter.

__ge__

Return self>=value.

__getattr__(name)

Override to check the handle

__getattribute__

Return getattr(self, name).

__gt__

Return self>value.

__hash__

Return hash(self).

__init__(filename[, mode, comment])

Initialize self.

__init_subclass__

This method is called when a class is subclassed.

__iter__()

Iterator for file

__le__

Return self<=value.

__lt__

Return self<value.

__ne__

Return self!=value.

__new__

Create and return a new object.

__reduce__

Helper for pickle.

__reduce_ex__

Helper for pickle.

__repr__

Return repr(self).

__setattr__

Implement setattr(self, name, value).

__sizeof__

Size of object in memory, in bytes.

__str__()

Return a representation of the Sile

__subclasshook__

Abstract classes can override this to customize issubclass().

_base_file(f)

Make f refer to the file with the appropriate base directory

_base_setup(*args, **kwargs)

Setup the Sile after initialization

_dynamical_matrix_from_fc(geom, FC, …)

_open()

_popfile()

_pushfile(f)

_r_add_overlap(parent_call, M)

Internal routine to ensure that the overlap matrix is read and added to the matrix M

_r_basis_fdf()

_r_basis_ion()

_r_basis_nc()

_r_basis_orb_indx()

_r_density_matrix_dm(*args, **kwargs)

Read density matrix from the DM file

_r_density_matrix_nc(*args, **kwargs)

Try and read the density matrix by reading the <>.nc

_r_density_matrix_tsde(*args, **kwargs)

Read density matrix from the TSDE file

_r_dynamical_matrix_fc(*args, **kwargs)

_r_dynamical_matrix_nc(*args, **kwargs)

_r_energy_density_matrix_nc(*args, **kwargs)

Read energy density matrix by reading the <>.nc

_r_energy_density_matrix_tsde(*args, **kwargs)

Read energy density matrix from the TSDE file

_r_fermi_level_eig()

_r_fermi_level_nc()

_r_fermi_level_tsde()

_r_fermi_level_tshs()

_r_force_constant_fc(*args, **kwargs)

_r_force_constant_nc(*args, **kwargs)

_r_force_fa(*args, **kwargs)

Read forces from the FA file

_r_force_fac(*args, **kwargs)

Read forces from the FAC file

_r_force_nc(*args, **kwargs)

Read forces from the nc file

_r_geometry_fdf(*args, **kwargs)

Returns Geometry object from the FDF file

_r_geometry_nc()

_r_geometry_tshs()

_r_geometry_xv(*args, **kwargs)

Returns SuperCell object from the FDF file

_r_grid_bin(name, *args, **kwargs)

_r_grid_grid_nc(name, *args, **kwargs)

_r_grid_nc(name, *args, **kwargs)

_r_hamiltonian_hsx(*args, **kwargs)

Read Hamiltonian from the HSX file

_r_hamiltonian_nc(*args, **kwargs)

Read Hamiltonian from the nc file

_r_hamiltonian_tshs(*args, **kwargs)

Read Hamiltonian from the TSHS file

_r_overlap_hsx(*args, **kwargs)

Read overlap from the HSX file

_r_overlap_nc(*args, **kwargs)

Read overlap from the nc file

_r_overlap_onlys(*args, **kwargs)

Read overlap from the onlyS file

_r_overlap_tshs(*args, **kwargs)

Read overlap from the TSHS file

_r_supercell_fdf(*args, **kwargs)

Returns SuperCell object from the FDF file

_r_supercell_nc()

_r_supercell_nsc_nc(*args, **kwargs)

_r_supercell_nsc_orb_indx(*args, **kwargs)

_r_supercell_xv(*args, **kwargs)

Returns SuperCell object from the FDF file

_read_label(label)

Try and read the first occurence of a key

_seek()

Closes all files, and starts over from beginning

_setup(*args, **kwargs)

Setup the fdfSileSiesta after initialization

_type(value)

Determine the type by the value

_write(*args, **kwargs)

Wrapper to default the write statements

dir_file([filename])

File of the current Sile

exist()

Query whether the file exists

get(label[, default, unit, with_unit])

Retrieve fdf-keyword from the file

includes()

Return a list of all files that are included or otherwise necessary for reading the fdf file

print(key, value)

Return a string which is pretty-printing the key+value

read(*args, **kwargs)

Generic read method which should be overloaded in child-classes

read_basis(*args, **kwargs)

Read the atomic species and figure out the number of atomic orbitals in their basis

read_density_matrix(*args, **kwargs)

Try and read density matrix by reading the <>.nc, <>.TSDE files, <>.DM (in that order)

read_dynamical_matrix(*args, **kwargs)

Read dynamical matrix from output of the calculation

read_energy_density_matrix(*args, **kwargs)

Try and read energy density matrix by reading the <>.nc or <>.TSDE files (in that order)

read_fermi_level(*args, **kwargs)

Read fermi-level from output of the calculation

read_force(*args, **kwargs)

Read forces from the output of the calculation (forces are not defined in the input)

read_force_constant(*args, **kwargs)

Read force constant from the output of the calculation

read_geometry([output])

Returns Geometry object by reading fdf or Siesta output related files.

read_grid(name, *args, **kwargs)

Read grid related information from any of the output files

read_hamiltonian(*args, **kwargs)

Try and read the Hamiltonian by reading the <>.nc, <>.TSHS files, <>.HSX (in that order)

read_overlap(*args, **kwargs)

Try and read the overlap matrix by reading the <>.nc, <>.TSHS files, <>.HSX, <>.onlyS (in that order)

read_supercell([output])

Returns SuperCell object by reading fdf or Siesta output related files.

read_supercell_nsc(*args, **kwargs)

Read supercell size using any method available

set(key, value[, keep])

Add the key and value to the FDF file

type(label)

Return the type of the fdf-keyword

write(*args, **kwargs)

Generic write method which should be overloaded in child-classes

write_geometry(geometry[, fmt])

Writes the geometry to the contained file

write_supercell(sc[, fmt])

Writes the supercell to the contained file

property base_file

File of the current Sile

dir_file(filename=None)

File of the current Sile

exist()

Query whether the file exists

property file

File of the current Sile

get(label, default=None, unit=None, with_unit=False)[source]

Retrieve fdf-keyword from the file

Parameters
  • label (str) – the fdf-label to search for

  • default (optional) – if the label is not found, this will be the returned value (default to None)

  • unit (str, optional) – unit of the physical quantity to return

  • with_unit (bool, optional) – whether the physical quantity gets returned with the found unit in the fdf file.

Returns

  • value (the value of the fdf-label. If the label is a block, a list is returned, for) – a real value a float (or if the default is of float), for an integer, an int is returned.

  • unit (if with_unit is true this will contain the associated unit if it is specified)

Examples

>>> print(open(...).readlines())
LabeleV 1. eV
LabelRy 1. Ry
Label name
FakeInt 1
%block Hello
line 1
line2
%endblock
>>> fdf.get('LabeleV') == 1. # default unit is eV
>>> fdf.get('LabelRy') == unit.siesta.unit_convert('Ry', 'eV')
>>> fdf.get('LabelRy', unit='Ry') == 1.
>>> fdf.get('LabelRy', with_unit=True) == (1., 'Ry')
>>> fdf.get('FakeInt', '0') == '1'
>>> fdf.get('LabeleV', with_unit=True) == (1., 'eV')
>>> fdf.get('Label', with_unit=True) == 'name' # no unit present on line
>>> fdf.get('Hello') == ['line 1', 'line2']
includes()[source]

Return a list of all files that are included or otherwise necessary for reading the fdf file

static print(key, value)[source]

Return a string which is pretty-printing the key+value

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_basis(*args, **kwargs)[source]

Read the atomic species and figure out the number of atomic orbitals in their basis

The order of the read is shown below.

One can limit the tried files to only one file by passing only a single file ending.

Parameters

order (list of str, optional) – the order of which to try and read the basis information. By default this is ['nc', 'ion', 'ORB_INDX', 'fdf']

read_density_matrix(*args, **kwargs)[source]

Try and read density matrix by reading the <>.nc, <>.TSDE files, <>.DM (in that order)

One can limit the tried files to only one file by passing only a single file ending.

Parameters

order (list of str, optional) – the order of which to try and read the density matrix By default this is ['nc', 'TSDE', 'DM'].

read_dynamical_matrix(*args, **kwargs)[source]

Read dynamical matrix from output of the calculation

Generally the mass is stored in the basis information output, but for dynamical matrices it makes sense to let the user control this, e.g. through the fdf file. By default the mass will be read from the AtomicMass key in the fdf file and _not_ from the basis set information.

Parameters
  • order (list of str, optional) – the order of which to try and read the dynamical matrix. By default this is ['nc', 'FC'].

  • cutoff_dist (float, optional) – cutoff value for the distance of the force-constants (everything farther than cutoff_dist will be set to 0 Ang). Default, no cutoff.

  • cutoff (float, optional) – absolute values below the cutoff are considered 0. Defaults to 0. eV/Ang**2.

  • trans_inv (bool, optional) – if true (default), the force-constant matrix will be fixed so that translational invariance will be enforced

  • sum0 (bool, optional) – if true (default), the sum of forces on atoms for each displacement will be forced to 0.

  • hermitian (bool, optional) – if true (default), the returned dynamical matrix will be hermitian

Returns

dynamic_matrix – the dynamical matrix

Return type

DynamicalMatrix

read_energy_density_matrix(*args, **kwargs)[source]

Try and read energy density matrix by reading the <>.nc or <>.TSDE files (in that order)

One can limit the tried files to only one file by passing only a single file ending.

Parameters

order (list of str, optional) – the order of which to try and read the density matrix By default this is ['nc', 'TSDE'].

read_fermi_level(*args, **kwargs)[source]

Read fermi-level from output of the calculation

Parameters

order (list of str, optional) – the order of which to try and read the fermi-level. By default this is ['nc', 'TSDE', 'TSHS', 'EIG'].

Returns

Ef – fermi-level

Return type

float

read_force(*args, **kwargs)[source]

Read forces from the output of the calculation (forces are not defined in the input)

Parameters

order (list of str, optional) – the order of the forces we are trying to read, default to ['FA', 'nc']

Returns

(*, 3)

Return type

vector with forces for each of the atoms

read_force_constant(*args, **kwargs)[source]

Read force constant from the output of the calculation

Returns

force_constant – vector [*, 3, 2, *, 3] with force constant element for each of the atomic displacements

Return type

numpy.ndarray

read_geometry(output=False, *args, **kwargs)[source]

Returns Geometry object by reading fdf or Siesta output related files.

One can limit the tried files to only one file by passing only a single file ending.

Parameters
  • output (bool, optional) – whether to read geometry from output files (default to read from the fdf file).

  • order (list of str, optional) – the order of which to try and read the geometry. By default this is ['XV', 'nc', 'fdf', 'TSHS'] if output is true If order is present output is disregarded.

Examples

>>> fdf = get_sile('RUN.fdf')
>>> fdf.read_geometry() # read from fdf
>>> fdf.read_geometry(True) # read from [XV, nc, fdf]
>>> fdf.read_geometry(order=['nc']) # read from [nc]
>>> fdf.read_geometry(True, order=['nc']) # read from [nc]
read_grid(name, *args, **kwargs)[source]

Read grid related information from any of the output files

The order of the readed data is shown below.

One can limit the tried files to only one file by passing only a single file ending.

Parameters
  • name (str) – name of data to read. The list of names correspond to the Siesta output manual (Rho, TotalPotential, etc.), the strings are case insensitive.

  • order (list of str, optional) – the order of which to try and read the geometry. By default this is ['nc', 'grid.nc', 'bin'] (bin refers to the binary files)

read_hamiltonian(*args, **kwargs)[source]

Try and read the Hamiltonian by reading the <>.nc, <>.TSHS files, <>.HSX (in that order)

One can limit the tried files to only one file by passing only a single file ending.

Parameters

order (list of str, optional) – the order of which to try and read the Hamiltonian. By default this is ['nc', 'TSHS', 'HSX'].

read_overlap(*args, **kwargs)[source]

Try and read the overlap matrix by reading the <>.nc, <>.TSHS files, <>.HSX, <>.onlyS (in that order)

One can limit the tried files to only one file by passing only a single file ending.

Parameters

order (list of str, optional) – the order of which to try and read the overlap matrix By default this is ['nc', 'TSHS', 'HSX', 'onlyS'].

read_supercell(output=False, *args, **kwargs)[source]

Returns SuperCell object by reading fdf or Siesta output related files.

One can limit the tried files to only one file by passing only a single file ending.

Parameters
  • output (bool, optional) – whether to read supercell from output files (default to read from the fdf file).

  • order (list of str, optional) – the order of which to try and read the supercell. By default this is ['XV', 'nc', 'fdf'] if output is true. If order is present output is disregarded.

Examples

>>> fdf = get_sile('RUN.fdf')
>>> fdf.read_supercell() # read from fdf
>>> fdf.read_supercell(True) # read from [XV, nc, fdf]
>>> fdf.read_supercell(order=['nc']) # read from [nc]
>>> fdf.read_supercell(True, order=['nc']) # read from [nc]
read_supercell_nsc(*args, **kwargs)[source]

Read supercell size using any method available

Raises

SislWarning if none of the files can be read

set(key, value, keep=True)[source]

Add the key and value to the FDF file

Parameters
  • key (str) – the fdf-key value to be set in the fdf file

  • value (str or list of str) – the value of the string. If a str is passed a regular fdf-key is used, if a list it will be a %block.

  • keep (bool, optional) – whether old flags will be kept in the fdf file. In this case a time-stamp will be written to show when the key was overwritten.

type(label)[source]

Return the type of the fdf-keyword

Parameters

label (str) – the label to look-up

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.

write_geometry(geometry, fmt='.8f', *args, **kwargs)[source]

Writes the geometry to the contained file

write_supercell(sc, fmt='.8f', *args, **kwargs)[source]

Writes the supercell to the contained file