QuantumATK Forum
QuantumATK => General Questions and Answers => Topic started by: jcj on December 5, 2016, 10:42
-
Hi,
I have two zero-bias electronic transmissions of a molecular system(DFT+NEGF approach). One is calculated from the standard way. The other is calculated from a gating loop at 0 gating voltage[the gating script below].
My question: Isn't that the two transmissions should be the same? But I got two different transmissions. Any idea?
Regards,
Chengjun
1 # Read in the old configuration
2 device_configuration = nlread("/analysis.nc",DeviceConfiguration)[0]
3 calculator = device_configuration.calculator()
4 metallic_region0 = device_configuration.metallicRegions()[0]
5
6 # test keywords: metallicaRigions
7
8
9 # Define gate_voltages
10 gate_voltage_list=numpy.linspace(-2.0, 1.0, 10)*Volt
11 for gate_voltage in gate_voltage_list:
12 # set the gate potential
13 device_configuration.setMetallicRegions(
14 [metallic_region0(value = gate_voltage)] )
15
16 # make a copy of the calculator and attach it to the configuration
17 # restart from the previous scf state
18 device_configuration.setCalculator(calculator(),
19 initial_state=device_configuration)
20
21 #Analysis
22 filename= 'gate_vdp.nc'
23 electron_density = ElectronDifferenceDensity(device_configuration)
24 nlsave(filename, electron_density,object_id='dens'+str(gate_voltage))
25
26 electrostatic_potential = ElectrostaticDifferencePotential(device_configuration)
27 nlsave(filename, electrostatic_potential, object_id='pot'+str(gate_voltage))
28
29 transmission_spectrum = TransmissionSpectrum(
30 configuration=device_configuration,
31 energies=numpy.linspace(-2,2,200)*eV,
32 )
33 nlsave(filename, transmission_spectrum,object_id='trans'+str(gate_voltage))
34 nlprint(transmission_spectrum)
-
Could you attach all the relevant scripts to your post, including the one for what you call the standard way of calculating the transmission spectrum?
-
Hi,
Attached is the script I calculated the transmission (let's label it trans_A). Then I do the gating looping over numpy.linspace(-2.0, 1.0, 10)*Volt. (Let's label the transmission at 0 gating voltage as trans_B)
The trans_A and trans_B is different. Any idea? Thanks,
-
If you compare the computational settings for the two transmission spectrum calculations, you may see that the two sets of computational parameters are different for these two calculations. So, I would not expect the corresponding results to be identical either.
transmission_spectrum = TransmissionSpectrum(
configuration=device_configuration,
energies=numpy.linspace(-2,2,200)*eV,)
transmission_spectrum = TransmissionSpectrum(
configuration=device_configuration,
energies=numpy.linspace(-3,3,401)*eV,
kpoints=MonkhorstPackGrid(4,4),
energy_zero_parameter=AverageFermiLevel,
infinitesimal=1e-06*eV,
self_energy_calculator=RecursionSelfEnergy(),
)