QuantumATK Forum
QuantumATK => General Questions and Answers => Topic started by: xiaolight on May 26, 2017, 21:40
-
# Calculate conductance for parallel spin
transmission_para = nlread('mgo_para.nc', TransmissionSpectrum)[0]
conductance_para_uu = transmission_para.conductance(spin=Spin.Up)
conductance_para_dd = transmission_para.conductance(spin=Spin.Down)
conductance_para = conductance_para_uu + conductance_para_dd
# Calculate conductance for anti-parallel spin
transmission_anti = nlread('mgo_anti.nc', TransmissionSpectrum)[0]
conductance_anti_uu = transmission_anti.conductance(spin=Spin.Up)
conductance_anti_dd = transmission_anti.conductance(spin=Spin.Down)
conductance_anti = conductance_anti_uu + conductance_anti_dd
print 'Conductance Parallel Spin (Siemens)'
print 'Up=%8.2e, Down=%8.2e' % (conductance_para_uu.inUnitsOf(Siemens),
conductance_para_dd.inUnitsOf(Siemens))
print 'Total = %8.2e' % (conductance_para.inUnitsOf(Siemens))
print
print 'Conductance Anti-Parallel Spin (Siemens)'
print 'Up=%8.2e, Down=%8.2e' % (conductance_anti_uu.inUnitsOf(Siemens),
conductance_anti_dd.inUnitsOf(Siemens))
print 'Total = %8.2e' % (conductance_anti.inUnitsOf(Siemens))
print
print 'TMR (optimistic) = %8.2f percent' % \
(100.*(conductance_para-conductance_anti)/conductance_anti)
print 'TMR (pessimistic) = %8.2f percent' % \
(100.*(conductance_para-conductance_anti)/(conductance_para+conductance_anti))
In the MTJ tutorial the TMR can be calculated by this code, so what does[0] mean? does it mean the TMR of zero energy?
-
It means that it's evaluated for the first energy, for which the transmission spectrum was computed. In this particular case, T(E) is only computed for E=0 so yes, it is at the Fermi level.
-
THX, so if I want to calculate the TMR of specific energy level, what should I do?
-
I'm not sure that makes sense, if you consider what TMR actually is.
But technically you can of course always change the energy at which the transmission spectrum is calculated.
-
For i in range(0,201):
transmission_para = nlread('mgo_para.nc', TransmissionSpectrum)[ i ]
I got err "index out of range". How can I do to deal with TransmissionSpectrum with energy (-1,1,201)
-
You should first read the transmission spectrum (TS) object, e.g., the last one in the nc-file:
transmission_para = nlread('mgo_para.nc', TransmissionSpectrum)[-1]
If you have many TS objects in the nc-file, then you have to specify the object's number instead of reading the last one [-1].
To get the information from TS object, read https://docs.quantumwise.com/manual/Types/TransmissionSpectrum/TransmissionSpectrum.html.