sisl.io.siesta.eigSileSiesta

class sisl.io.siesta.eigSileSiesta(filename, *args, **kwargs)

Bases: SileSiesta

Eigenvalues as calculated in the SCF loop, easy plots using sdata

The .EIG file from Siesta contains the eigenvalues for k-points used during the SCF. Using the command-line utility sdata one may plot the eigenvalue spectrum to visualize the spread of eigenvalues.

# Plot the eigenspectrum
sdata siesta.EIG --plot
# or to save to png file
sdata siesta.EIG --plot eig_spread.png

One may also extract/plot the DOS using the eigenvalues and the k-point weights:

# plot the DOS using default values
sdata siesta.EIG --dos --plot
# change the energy spacing and plot it
sdata siesta.EIG --dos dE=1meV --plot
# change the energy spacing;
# plot two different temperatures
sdata siesta.EIG --dos dE=1meV kT=5K --dos kT=25K --plot
# store the data in a dos.dat (3 columns, E, kT=5, kT=25K)
sdata siesta.EIG --dos dE=1meV kT=5K --dos kT=25K --out dos.dat

This will default to plot the DOS using these parameters: dE = 5 meV, kT = 300 K (25 meV), Gaussian distribution and in the full energy-range of the eigenvalue spectrum. By default the k-point weights will be read in the *.KP file, however if the file does not exist one may use the option --kp-file FILE to read in the weights from FILE.

To limit the shown energy region, simply use:

sdata siesta.EIG -E -10:10 --dos

to reduce to the -10 eV to 10 eV energy range.

One may optionally choose the temperature smearing and the used distribution function:

# position dependent values
sdata siesta.EIG -E -10:10 --dos 0.01 0.1 lorentzian
# key based values
sdata siesta.EIG -E -10:10 --dos dE=0.01 kT=0.1 dist=lorentzian

which will calculate the DOS in steps of 10 meV, the temperature smearing is 0.1 eV and the used distribution is a Lorentzian. Several invocations of --dos will collect the data until either a --plot or --out is found on the command line.

Methods

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_data()

Read eigenvalues, as calculated and written by Siesta

read_fermi_level()

Query the Fermi-level contained in the 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

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_data()[source]

Read eigenvalues, as calculated and written by Siesta

Returns

numpy.ndarray – where ns number of spin-components, nk number of k-points and nb number of bands.

Return type

all eigenvalues, shifted to \(E_F = 0\), shape (ns, nk, nb)

read_fermi_level()[source]

Query the Fermi-level contained in the file

Returns

Ef

Return type

fermi-level of the system

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.