RecursionSelfEnergy¶
- class RecursionSelfEnergy(save_self_energies=None, tolerance=None, maximum_iteration=None, sparse_threshold=None, storage_strategy=None, enable_block_algorithm=None)¶
Self-energy calculator based on the Recursion method. This method is an iterative scheme for getting self energies, with convergence \(O(2^N)\)
- Parameters:
storage_strategy (
SaveInMemory
|StoreOnDisk
|NoStorage
) – The way self energies are stored between iterations. Default:SaveInMemory()
tolerance (float > 0) – The tolerance of convergence of the self energies before termination of the recursion. Default:
1e-13
maximum_iteration (int > 0) – The maximum number of recursion steps allowed before termination. Default:
400
sparse_threshold (float > 0) – Self energies (in Hartree) smaller than this value treated as 0 when storing as sparse matrix. Default:
1e-12
enable_block_algorithm (bool) – Flag that determines whether an algorithm exploiting the block structure of the transfer matrices should be used if possible. Default:
True
save_self_energies – Deprecated: from v2017.0, use
storage_strategy
instead.
- enableBlockAlgorithm()¶
- Returns:
Whether to use the algorithm that exploits the block structure of the transfer matrices.
- Return type:
bool
- maximumIteration()¶
- Returns:
The maximum number of recursion steps.
- Return type:
int
- saveSelfEnergies()¶
Deprecated: from v2017.0
- sparseThreshold()¶
- Returns:
Values treated as 0.
- Return type:
float
- storageStrategy()¶
- Returns:
The way self energies are stored between iterations.
- Return type:
- tolerance()¶
- Returns:
The tolerance of convergence.
- Return type:
float
- uniqueString()¶
Return a unique string representing the state of the object.
Usage Examples¶
Define that the self energies on the complex contour are calculated with the recursion method, and the self energies calculated in the first iteration of the SCF loop are saved in memory and reused in the following iterations.
device_algorithm_parameters = DeviceAlgorithmParameters(
self_energy_calculator_complex=RecursionSelfEnergy(storage_strategy=SaveInMemory()),
)
Storing the self energies potentially requires a significant amount of memory. Therefore it can be useful to define that the self energies on the complex contour are not saved.
device_algorithm_parameters = DeviceAlgorithmParameters(
self_energy_calculator_complex=RecursionSelfEnergy(storage_strategy=NoStorage()),
)
While this reduces the required memory, it also has a negative impact on performance.
Instead of saving the self energies in memory, they can stored on disk.
This setting provides the same performance as SaveInMemory()
and requires sufficient disk space (potentially hundreds of gigabytes).
device_algorithm_parameters = DeviceAlgorithmParameters(
self_energy_calculator_complex=RecursionSelfEnergy(storage_strategy=StoreOnDisk()),
)
Notes¶
The RecursionSelfEnergy uses the iterative scheme by Lopez, Lopez and Rubio [1] for calculating the self energy matrix.