# Set up configuration
central_region = BulkConfiguration(
bravais_lattice=central_region_lattice,
elements=central_region_elements,
cartesian_coordinates=central_region_coordinates
)
device_configuration = DeviceConfiguration(
central_region,
[left_electrode, right_electrode],
equivalent_electrode_lengths=[46.9136, 46.9136]*Angstrom,
transverse_electrode_repetitions=[[1, 1], [1, 1]],
)
# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------
#----------------------------------------
# Hamiltonian Parametrization
#----------------------------------------
hamiltonian_parametrization = SlaterKosterHamiltonianParametrization(
basis_set=DFTBDirectory(r"/home/h0/algh988c/QN13"))
#----------------------------------------
# Pair Potentials
#----------------------------------------
pair_potentials = DFTBDirectory(r"/home/h0/algh988c/QN13")
#----------------------------------------
# Numerical Accuracy Settings
#----------------------------------------
device_k_point_sampling = MonkhorstPackGrid(
nc=98,
)
device_numerical_accuracy_parameters = NumericalAccuracyParameters(
k_point_sampling=device_k_point_sampling,
density_mesh_cutoff=10.0*Hartree,
)
#----------------------------------------
# Device Algorithm Settings
#----------------------------------------
self_energy_calculator_real = KrylovSelfEnergy()
non_equilibrium_method = GreensFunction(
processes_per_contour_point=2,
)
equilibrium_method = GreensFunction(
processes_per_contour_point=2,
)
device_algorithm_parameters = DeviceAlgorithmParameters(
self_energy_calculator_real=self_energy_calculator_real,
non_equilibrium_method=non_equilibrium_method,
equilibrium_method=equilibrium_method,
store_basis_on_grid=True,
)
#----------------------------------------
# Device Calculator
#----------------------------------------
calculator = DeviceSemiEmpiricalCalculator(
hamiltonian_parametrization=hamiltonian_parametrization,
pair_potentials=pair_potentials,
numerical_accuracy_parameters=device_numerical_accuracy_parameters,
device_algorithm_parameters=device_algorithm_parameters,
)
device_configuration.setCalculator(calculator)
nlprint(device_configuration)
device_configuration.update()
nlsave('389.rigid.hdf5', device_configuration)
# -------------------------------------------------------------
# Transmission Spectrum
# -------------------------------------------------------------
kpoint_grid = MonkhorstPackGrid()
transmission_spectrum = TransmissionSpectrum(
configuration=device_configuration,
energies=numpy.linspace(1.5, 2.5, 150)*eV,
kpoints=kpoint_grid,
energy_zero_parameter=AverageFermiLevel,
infinitesimal=1e-06*eV,
self_energy_calculator=KrylovSelfEnergy(),
enforce_zero_in_band_gap=True,
)
nlsave('389.rigid.hdf5', transmission_spectrum)
nlprint(transmission_spectrum)