QuantumATK Forum

QuantumATK => General Questions and Answers => Topic started by: xiaolight on May 26, 2017, 21:40

Title: TMR calculation
Post 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?
Title: Re: TMR calculation
Post by: Anders Blom on May 26, 2017, 23:23
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.
Title: Re: TMR calculation
Post by: xiaolight on May 30, 2017, 17:02
THX, so if I want to calculate the TMR of specific energy level, what should I do?
Title: Re: TMR calculation
Post by: Anders Blom on May 30, 2017, 17:44
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.
Title: Re: TMR calculation
Post by: guyue03 on November 6, 2018, 05:08
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)
Title: Re: TMR calculation
Post by: Petr Khomyakov on November 6, 2018, 09:58
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.