EquivalentBulk

class EquivalentBulk(electrode_constraint_length=None, iteration_control_parameters=None, algorithm_parameters=None)

Class for representing an Equivalent Bulk initial Density Matrix for Device simulations.

Parameters:
  • electrode_constraint_length (PhysicalQuantity of type length) – Length over which the atoms in the electrode copy within the central region will be initialized with a linear combination of the converged density matrix of the electrodes and the equivalent bulk density matrix. The weight of the electrode density matrix is 1 at the boundary and 0 at the distance electrode_constraint_length from the boundary.
    Default: 10.0 * Angstrom

  • iteration_control_parameters (IterationControlParameters) – The IterationControlParameters used for the equivalent bulk run. It is not allowed to use NonSelfconsistent for EquivalentBulk.

  • algorithm_parameters (AlgorithmParameters) – The AlgorithmParameters used for the equivalent bulk.

algorithmParameters()
Returns:

The algorithm parameters.

Return type:

AlgorithmParameters

electrodeConstraintLength()
Returns:

The electrode constraint length.

Return type:

PhysicalQuantity of type length

initializeCentralRegionDensityMatrix(device_builder, downgraded_calculator, schroedinger_container)

Method for initializing the density matrix of the central region.

With this initial density type, the Hamiltonian is also initialized. This function carries out a self-consistent calculation of the isolated central region of the device and copies over the final density matrix to the initial density matrix used in the device calculation.

Parameters:
  • device_builder (DeviceLCAOBuilder | DeviceSemiEmpiricalBuilder) – The device builder.

  • downgraded_calculator (LCAOCalculator | HuckelCalculator | SlaterKosterCalculator) – The calculator to use for the isolated central region calculation.

  • schroedinger_container (NLEngine.CompositeSchroedingerContainer) – The device Schroedinger container, the Hamiltonian and density matrix of which will be initialized.

iterationControlParameters()
Returns:

The iteration control parameters.

Return type:

IterationControlParameters

uniqueString()

Return a unique string representing the state of the object.

Usage Examples

Setup a self-consistent calculation where the initial density matrix is constructed by first performing a self-consistent bulk calculation of the central region, i.e. a calculation with periodic boundary conditions in the C-direction.

The initial density matrix elements of atoms within a distance of 7 Angstrom from the electrodes are set to the electrode density matrix elements.

device_algorithm_parameters = DeviceAlgorithmParameters(
    initial_density_type=EquivalentBulk(electrode_constraint_length=7.*Ang))
    calculator=DeviceHuckelCalculator(
    device_algorithm_parameters=device_algorithm_parameters,
    )

Notes

  • The EquivalentBulk initial density type often gives a very good initial guess for the density matrix. It can also be used when the central region is not periodic.

  • The EquivalentBulk density can also be used for obtaining the transmission spectrum, by setting the IterationControlParameters of the :ref:` DeviceLCAOCalculator_c` to NonSelfconsistent_c. This approach is usually very accurate and fast for systems at zero bias.

  • If the electrode_constraint_length is longer than the length of the electrode, still only the electrode copy atoms within the central region will be affected. However, the weighting of the electrode density matrix will be larger. For instance, if electrode_constraint_length is infinite, the initial density matrix of the electrode copy atoms in the central region will be the electrode density matrix.