calculateBlochStates¶
- calculateBlochStates(configuration, quantum_numbers=None, quantum_number_reference=None, spin=None, k_point=None, diagonalization_method=None, density_mesh_cutoff=None)¶
A method for calculating the real space wave function of multiple Bloch states.
- Parameters:
configuration (
BulkConfiguration
) – The configuration for which the eigenstate should be calculated.quantum_numbers (list of int) – A list of quantum numbers of the desired eigenstate. Default:
[0]
quantum_number_reference (
Absolute
|Lumo
) – Whether the quantum numbers are referred to the lowest available energy state (Absolute
), or to the lowest unoccupied state (Lumo
). Default:Absolute
spin (
Spin.Up
|Spin.Down
|Spin.All
) – The spin to calculate the states for. Default:Spin.All
k_point (list(3) of floats) – The k-point in fractional coordinates that the Bloch state should be calculated for. Default:
[0.0, 0.0, 0.0]
diagonalization_method –
Method used for diagonalizing the hamiltonian.
This parameter allows to choose between a full diagonalization solver and an iterative subspace solver. The full diagonalization solver evaluates all bands from the lowest energy one to a given number of bands above fermi level. The iterative subspace solver allows to evaluate a given number of bands around fermi level, or around an energy of choice.
The full diagonalization solver is more robust, but can be proibitively expensive for very large systems.
The iterative solver can deal with very large systems (tens of thousands atoms and beyond) and greatly outperforms when calculating a small number of eigenvalues, but it is also inherently less robust.
Note: the exact method used when selecting
FullDiagonalizationSolver
is defined by the calculator (seeAlgorithmParameters
).IterativeDiagonalizationSolver
is not supported forPlaneWaveCalculator
Default:
FullDiagonalizationSolver
density_mesh_cutoff (PhysicalQuantity of type energy |
GridSampling
|OptimizedFFTGridSampling
) – The mesh cutoff to be used to determine the grid sampling. The mesh cutoff must be a positive energy or aGridSampling
object. Default: Specific for each calculator.
- Type:
- Returns:
The Bloch states.
- Return type:
A generator of instances of
BlochState
Usage Examples¶
Create a calculateBlochStates
generator for a set of given quantum_numbers
and save the results.
# %% BlochStatesGenerator
bloch_states_generator = calculateBlochStates(
configuration=silicon_alpha,
quantum_numbers=(0, 2, 3)
)
for bloch_state in bloch_states_generator:
quantum_number = bloch_state.quantumNumber()
nlsave('results.hdf5', bloch_state, object_id=f'bloch_state_{quantum_number}')
Notes¶
This method enables to create a generator for multiple BlochState
objects according to a
set of quantum_numbers
. These quantum_numbers
are all specified relative to a
quantum_number_reference
which can either be the lowest unoccupied energy state, Lumo
, or
the lowest available energy state, Absolute
. As demonstrated in the Usage Example, the individual
BlochState
objects are generated and calculated once looped over and afterwards saved.
calculateBlochStates()
is also applicable via the GUI using the analysis BlochStateGenerator.