SpecialThermalDisplacement

SpecialThermalDisplacement(configuration, dynamical_matrix=None, temperature=None, minimum_phonon_energy=None, maximum_phonon_energy=None, configuration_index=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

  • minimum_phonon_energy (PhysicalQuantity of type energy) – Include only phonon modes with energies above the minimum phonon energy.
    Default: 1e-3*eV

  • maximum_phonon_energy – Include only phonon modes with energies below the minimum phonon energy.
    Default: 1e-3*eV

  • configuration_index (int) – The method can be extended by using configurational averaging over a small number (four) of different displacement configurations specified by the configuration index which must be either 0, 1, 2, or 3.
    Default: 0

  • 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

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 [1] 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 [2] . 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 [1].

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.