EquivalentBulk(electrode_constraint_length=None, iteration_control_parameters=None, algorithm_parameters=None)¶
Class for representing an Equivalent Bulk initial Density Matrix for Device simulations.
- 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_lengthfrom the boundary. Default:
10.0 * Angstrom
- iteration_control_parameters (
IterationControlParameters) – The
IterationControlParametersused for the equivalent bulk run. It is not allowed to use
- algorithm_parameters (
AlgorithmParameters) – The
AlgorithmParametersused for the equivalent bulk.
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.
- device_builder (
DeviceSemiEmpiricalBuilder) – The device builder.
- downgraded_calculator (
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.
- device_builder (
- 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
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, )
- 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_lengthis 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_lengthis infinite, the initial density matrix of the electrode copy atoms in the central region will be the electrode density matrix.