EigenmodePhonon¶
-
class
sisl.physics.phonon.
EigenmodePhonon
(state, c, parent=None, **info)[source]¶ Eigenmodes of phonons with eigenvectors and eigenvalues.
This holds routines that enable the calculation of (projected) density of states.
Attributes
c
dkind
The data-type of the state (in str) dtype
Data-type for the state hw
info
mode
parent
shape
Returns the shape of the state state
Methods
DOS
(E[, distribution])Calculate DOS for provided energies, E. PDOS
(E[, distribution])Calculate PDOS for provided energies, E. __init__
(state, c[, parent])Define a state container with a given set of states and coefficients for the states asCoefficient
()asState
()change_gauge
(gauge)In-place change of the gauge of the mode coefficients copy
()Return a copy (only the coefficients and states are copied), parent
andinfo
are passed by referencedegenerate
(eps)Find degenerate coefficients with a specified precision displacement
()Calculate displacements for the modes iter
([asarray])An iterator looping over the states in this system norm
()Return a vector with the norm of each state \(\sqrt{\langle\psi|\psi\rangle}\) norm2
([sum])Return a vector with the norm of each state \(\langle\psi|\psi\rangle\) normalize
()Return a normalized state where each state has \(|\psi|^2=1\) outer
([idx])Return the outer product for the indices idx (or all if None
) by \(\sum_i|\psi_i\rangle c_i\langle\psi_i|\)sort
([ascending])Sort and return a new StateC
by sorting the coefficients (default to ascending)sub
(idx)Return a new state with only the specified states velocity
([eps])Calculate velocity for the modes -
DOS
(E, distribution='gaussian')[source]¶ Calculate DOS for provided energies, E.
This routine calls
sisl.physics.phonon.DOS
with appropriate arguments and returns the DOS.See
DOS
for argument details.
-
PDOS
(E, distribution='gaussian')[source]¶ Calculate PDOS for provided energies, E.
This routine calls
PDOS
with appropriate arguments and returns the PDOS.See
PDOS
for argument details.
-
asCoefficient
()¶
-
asState
()¶
-
c
¶
-
change_gauge
(gauge)¶ In-place change of the gauge of the mode coefficients
The two gauges are related through:
\[\tilde C_j = e^{i\mathbf k\mathbf r_j} C_j\]where \(C_j\) belongs to the gauge
R
and \(\tilde C_j\) is in the gauger
.Parameters: - gauge : {‘R’, ‘r’}
specify the new gauge for the mode coefficients
-
copy
()¶ Return a copy (only the coefficients and states are copied),
parent
andinfo
are passed by reference
-
degenerate
(eps)¶ Find degenerate coefficients with a specified precision
Parameters: - eps : float
the precision above which coefficients are not considered degenerate
Returns: - list of numpy.ndarray: a list of indices
-
displacement
()[source]¶ Calculate displacements for the modes
This routine calls displacements with appropriate arguments and returns the real space displacements for the modes.
Note that the coefficients associated with the
ModeCPhonon
must correspond to the frequencies of the modes.See
displacement
for details.
-
dkind
¶ The data-type of the state (in str)
-
dtype
¶ Data-type for the state
-
hw
¶
-
info
¶
-
iter
(asarray=False)¶ An iterator looping over the states in this system
Parameters: - asarray: bool, optional
if true the yielded values are the state vectors, i.e. a numpy array. Otherwise an equivalent object is yielded.
Yields: - state : State
a state only containing individual elements, if asarray is false
- state : numpy.ndarray
a state only containing individual elements, if asarray is true
-
mode
¶
-
norm
()¶ Return a vector with the norm of each state \(\sqrt{\langle\psi|\psi\rangle}\)
Returns: - numpy.ndarray
the normalization for each state
-
norm2
(sum=True)¶ Return a vector with the norm of each state \(\langle\psi|\psi\rangle\)
Parameters: - sum : bool, optional
if true the summed site square is returned (a vector). For false a matrix with normalization squared per site is returned.
Returns: - numpy.ndarray
the normalization for each state
-
normalize
()¶ Return a normalized state where each state has \(|\psi|^2=1\)
This is roughly equivalent to:
>>> state = StateC(np.arange(10), 1) >>> n = state.norm() >>> norm_state = StateC(state.state / n.reshape(-1, 1), state.c.copy()) >>> norm_state.c[0] == 1
Returns: - state : a new state with all states normalized, otherwise equal to this
-
outer
(idx=None)¶ Return the outer product for the indices idx (or all if
None
) by \(\sum_i|\psi_i\rangle c_i\langle\psi_i|\)Parameters: - idx : int or array_like, optional
only perform an outer product of the specified indices, otherwise all states are used
Returns: - numpy.ndarray : a matrix with the sum of outer state products
-
parent
¶
-
shape
¶ Returns the shape of the state
-
sort
(ascending=True)¶ Sort and return a new
StateC
by sorting the coefficients (default to ascending)Parameters: - ascending : bool, optional
sort the contained elements ascending, else they will be sorted descending
-
state
¶
-
sub
(idx)¶ Return a new state with only the specified states
Parameters: - idx : int or array_like
indices that are retained in the returned object
Returns: - StateC : a new object with a subset of the states
-
velocity
(eps=1e-07)¶ Calculate velocity for the modes
This routine calls
velocity
with appropriate arguments and returns the velocity for the modes.Note that the coefficients associated with the
ModeCPhonon
must correspond to the energies of the modes.See
velocity
for details.Parameters: - eps : float, optional
precision used to find degenerate modes.
Notes
The eigenvectors for the modes may have changed after calling this routine. This is because of the velocity un-folding for degenerate modes. I.e. calling
displacement
and/orPDOS
after this method may change the result.
-