SpecialThermalDisplacement

SpecialThermalDisplacement(configuration, dynamical_matrix=None, temperature=None, phonon_energy_interval=None, number_of_configurations=None, fix_electrode_atoms=None)

Generates a temperature dependent displacement and returns the configuration or list of configurations with displaced atomic coordinates.

Parameters:
  • configuration (DeviceConfiguration | BulkConfiguration) – The configuration to displace.
  • dynamical_matrix (DynamicalMatrix) – A DynamicalMatrix object constructed for the same configuration given as input.
    Default: A default DynamicalMatrix object
  • temperature (PhysicalQuantity of type temperature) – The temperature for which to generate the displacements.
    Default: 300*Kelvin
  • phonon_energy_interval (list of two PhysicalQuantity of type energy) – A list of two energies determining the interval for included phonon modes. A phonon mode is included if the corresponding energy is within the provided interval. Default is to include all phonon modes, except those with zero energy.
    Default: [1e-3, 1.0]*eV
  • number_of_configurations (int) – Number of returned configuration with different displacements. This number is currently limited to 1, 2, 3 or 4.
    Default: 1
  • fix_electrode_atoms (bool) – Boolean controling whether the electrodes and electrode extensions should be kept fixed for a device configuration.
    Default: True
Returns:

The displaced configuration or list of displaced configurations.

Return type:

DeviceConfiguration | BulkConfiguration | list of DeviceConfiguration | list of BulkConfiguration

Usage Examples

Calculate the SpecialThermalDisplacement configuration for bulk silicon and save it to a file:

# -------------------------------------------------------------
# Bulk Configuration
# -------------------------------------------------------------
# Set up lattice
lattice = FaceCenteredCubic(5.4306*Angstrom)

# Define elements
elements = [Silicon, Silicon]

# Define coordinates
fractional_coordinates = [[ 0.  ,  0.  ,  0.  ],
                          [ 0.25,  0.25,  0.25]]

# Set up configuration
bulk_configuration0 = BulkConfiguration(
    bravais_lattice=lattice,
    elements=elements,
    fractional_coordinates=fractional_coordinates
    )

# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------

potentialSet = Tersoff_Si_1988b()
calculator = TremoloXCalculator(parameters=potentialSet)
calculator.setVerletListsDelta(0.25*Angstrom)

bulk_configuration0.setCalculator(calculator)
bulk_configuration0.update()

bulk_configuration0 = OptimizeGeometry(
    bulk_configuration0,
    max_forces=0.001*eV/Ang,
    max_stress=0.01*GPa,
    max_steps=200,
    max_step_length=0.2*Ang,
    trajectory_filename=None,
    optimizer_method=LBFGS(),
    constrain_bravais_lattice=True,
)

# Repeat the configuration 3 times in each direction
bulk_configuration = bulk_configuration0.repeat(3, 3, 3)

# -------------------------------------------------------------
# Dynamical Matrix
# -------------------------------------------------------------
dynamical_matrix = DynamicalMatrix(
    configuration=bulk_configuration,
    repetitions=(3, 3, 3),
    atomic_displacement=0.01*Angstrom,
    acoustic_sum_rule=True,
    symmetrize=True,
    finite_difference_method=Central,
    processes_per_displacement=1,
    )

# -------------------------------------------------------------
# Special Thermal Displacement
# -------------------------------------------------------------
new_configuration = SpecialThermalDisplacement(
    bulk_configuration,
    dynamical_matrix,
    temperature=300*Kelvin,
    phonon_energy_interval=[1e-3, 1]*eV,
    )

nlsave('si_special_thermal_displacement.hdf5', new_configuration)

si_special_thermal_displacement.py

Notes

The special thermal displacement (STD) method by Zacharias and Giustino [ZG16] provides a simple and efficient way of calculating electron-phonon coupling by using a single (one-shot) frozen-phonon calculation in a supercell of the material. The method can for instance be used for optical absorbtion spectra including phonon-induced indirect optical transitions, band-gap renormalization at finite temperature for semiconductors and insulators, phonon-limited mobilities, and electron-phonon coupling effects in device calculations [GMP+17] . The method can be extended by using configurational averaging over a small number of different displacement configurations in the same supercell to improve the accuracy of the calculated properties. The scheme for generating the optimal displaced configurations and its formal justification are given in [ZG16].

The SpecialThermalDisplacement function requires a bulk configuration or a device configuration with a dynamical matrix from which the phonons of the system can be calculated. The function returns the displaced configuration or list of displaced configurations which can then be used to calculate e.g. the OpticalSpectrum at the specified temperature.

[GMP+17]Tue Gunst, Troels Markussen, Mattias L. N. Palsgaard, Kurt Stokbro, and Mads Brandbyge. First-principles electron transport with phonon coupling: Large scale at low cost. Phys. Rev. B, 96(16):161404, oct 2017. arXiv:1706.09290, doi:10.1103/PhysRevB.96.161404.
[ZG16](1, 2) Marios Zacharias and Feliciano Giustino. One-shot calculation of temperature-dependent optical spectra and phonon-induced band-gap renormalization. Phys. Rev. B, 94:075125, Aug 2016. doi:10.1103/PhysRevB.94.075125.