Dear Dr. Blom,
Thank you for the reply. I'd attached the file after editing the post so I think there occured an error.
Here's the code I've used:
from ATK.TwoProbe import *
from ATK.MPI import processIsMaster
# Opening vnlfile
if processIsMaster(): file = VNLFile('D:/Atomistix_works/Au_nanowire/Au_nanowire_c1.vnl')
# Scattering elements and coordinates
scattering_elements = [Gold, Gold, Gold, Gold,
Gold, Gold, Gold, Gold]
scattering_coordinates = [[ 6. , 6. , 0. ],
[ 6. , 6. , 2.8],
[ 6. , 6. , 5.6],
[ 6. , 6. , 8.4],
[ 6. , 6. , 11.2],
[ 6. , 6. , 14. ],
[ 6. , 6. , 16.8],
[ 6. , 6. , 19.6]]*Angstrom
electrode_elements = [Gold, Gold]
electrode_coordinates = [[ 6. , 6. , 0. ],
[ 6. , 6. , 2.8]]*Angstrom
electrode_cell = [[ 12. , 0. , 0. ],
[ 0. , 12. , 0. ],
[ 0. , 0. , 5.6]]*Angstrom
# Set up electrodes
electrode_configuration = PeriodicAtomConfiguration(
electrode_cell,
electrode_elements,
electrode_coordinates
)
# Set up two-probe configuration
twoprobe_configuration = TwoProbeConfiguration(
(electrode_configuration,electrode_configuration),
scattering_elements,
scattering_coordinates,
electrode_repetitions=[[1,1],[1,1]],
equivalent_atoms=([0,0],[1,7])
)
if processIsMaster(): nlPrint(twoprobe_configuration)
if processIsMaster(): file.addToSample(twoprobe_configuration, 'Au_nanowire')
######################################################################
# Central region parameters
######################################################################
exchange_correlation_type = LDA.PZ
iteration_mixing_parameters = iterationMixingParameters(
algorithm = IterationMixing.Pulay,
diagonal_mixing_parameter = 0.1,
quantity = IterationMixing.Hamiltonian,
history_steps = 6
)
electron_density_parameters = electronDensityParameters(
mesh_cutoff = 150.0*Rydberg
)
basis_set_parameters = basisSetParameters(
type = DoubleZetaPolarized,
radial_sampling_dr = 0.005*Bohr,
energy_shift = 0.01*Rydberg,
delta_rinn = 0.8,
v0 = 40.0*Rydberg,
charge = 0.0,
split_norm = 0.15
)
iteration_control_parameters = iterationControlParameters(
tolerance = 0.0001,
criterion = IterationControl.Strict,
max_steps = 1000
)
electrode_voltages = (1.0,0.0)*Volt
two_probe_algorithm_parameters = twoProbeAlgorithmParameters(
electrode_constraint = ElectrodeConstraints.Off,
initial_density_type = InitialDensityType.EquivalentBulk
)
energy_contour_integral_parameters = energyContourIntegralParameters(
circle_points = 30,
integral_lower_bound = 3*Rydberg,
fermi_line_points = 10,
fermi_function_poles = 4,
real_axis_infinitesimal = 0.01*electronVolt,
real_axis_point_density = 0.02*electronVolt
)
two_center_integral_parameters = twoCenterIntegralParameters(
cutoff = 2500.0*Rydberg,
points = 1024
)
######################################################################
# Homogeneous electrode parameters
######################################################################
homogeneous_electrode_electron_density_parameters = electronDensityParameters(
mesh_cutoff = 150.0*Rydberg
)
homogeneous_electrode_iteration_control_parameters = iterationControlParameters(
tolerance = 0.0001,
criterion = IterationControl.Strict,
max_steps = 10000
)
homogeneous_electrode_brillouin_zone_integration_parameters = brillouinZoneIntegrationParameters(
monkhorst_pack_parameters = (1, 1, 100)
)
homogeneous_electrode_iteration_mixing_parameters = iterationMixingParameters(
algorithm = IterationMixing.Pulay,
diagonal_mixing_parameter = 0.1,
quantity = IterationMixing.Hamiltonian,
history_steps = 6
)
homogeneous_electrode_eigenstate_occupation_parameters = eigenstateOccupationParameters(
temperature = 300.0*Kelvin
)
######################################################################
# Collect Homogeneous electrode parameters
######################################################################
homogeneous_electrode_parameters = ElectrodeParameters(
brillouin_zone_integration_parameters = homogeneous_electrode_brillouin_zone_integration_parameters,
electron_density_parameters = homogeneous_electrode_electron_density_parameters,
eigenstate_occupation_parameters = homogeneous_electrode_eigenstate_occupation_parameters,
iteration_mixing_parameters = homogeneous_electrode_iteration_mixing_parameters,
iteration_control_parameters = homogeneous_electrode_iteration_control_parameters
)
######################################################################
# Initialize self-consistent field calculation
######################################################################
two_probe_method = TwoProbeMethod(
electrode_parameters = (homogeneous_electrode_parameters,homogeneous_electrode_parameters),
exchange_correlation_type = exchange_correlation_type,
iteration_mixing_parameters = iteration_mixing_parameters,
electron_density_parameters = electron_density_parameters,
basis_set_parameters = basis_set_parameters,
iteration_control_parameters = iteration_control_parameters,
energy_contour_integral_parameters = energy_contour_integral_parameters,
two_center_integral_parameters = two_center_integral_parameters,
electrode_voltages = electrode_voltages,
algorithm_parameters = two_probe_algorithm_parameters
)
if processIsMaster(): nlPrint(two_probe_method)
runtime_parameters = runtimeParameters(
verbosity_level = 10,
checkpoint_filename = 'D:/Atomistix_works/Au_nanowire/Au_nanowire.nc'
)
# Perform self-consistent field calculation
scf = executeSelfConsistentCalculation(
twoprobe_configuration,
two_probe_method,
runtime_parameters = runtime_parameters
)
######################################################################
# Calculate physical properties
######################################################################
current = calculateCurrent(
self_consistent_calculation = scf,
brillouin_zone_integration_parameters = brillouinZoneIntegrationParameters((1, 1)),
green_function_infinitesimal = 1.0e-5*electronVolt,
number_of_points = 100
)
if processIsMaster(): nlPrint(current)